Browse Source

Allow model_modify to "drop"

Yentl Van Tendeloo 7 years ago
parent
commit
5e5d1fa8b1

BIN
bootstrap/bootstrap.m.gz


+ 14 - 4
bootstrap/core_algorithm.alc

@@ -719,7 +719,12 @@ Element function execute_operation(operation_id : String, input_models : Element
 		model_create(merged_model, model_name, merged_metamodel_id, "Model")
 		output("Operating on: " + cast_string(model_name))
 		// We want to modify, so modify
-		modify(merged_model, True)
+		if (modify(merged_model, True)):
+			// Overwrite the merged model
+			model_overwrite(merged_model, get_entry_id(model_name), merged_metamodel_id)
+		else:
+			// Reload the merged model
+			merged_model = get_full_model(get_entry_id(model_name), merged_metamodel_id)
 		//model_delete(get_entry_id(model_name))
 		result = True
 	elif (exact_type == "ActionLanguage"):
@@ -1686,8 +1691,10 @@ String function transformation_add(source_models : Element, target_models : Elem
 			merged_formalism = model_fuse(formalism_map)
 			model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 			output("Operating on: merged/" + operation_name)
-			modify(merged_formalism, True)
-			model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+			if (modify(merged_formalism, True)):
+				model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+			else:
+				merged_formalism = get_full_model(get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 
 		if (operation_type == "manual"):
 			// Finished with all information, now create the model itself!
@@ -1829,7 +1836,10 @@ String function cmd_transformation_add_MT(source_models : Element, target_models
 	merged_formalism = model_fuse(to_ramify)
 	model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 	output("Operating on: merged/" + operation_name)
-	modify(merged_formalism, True)
+	if (modify(merged_formalism, True)):
+		model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+	else:
+		merged_formalism = get_full_model(get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 	model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 
 	ramified_metamodel = ramify(merged_formalism)

+ 4 - 3
bootstrap/mini_modify.alc

@@ -497,7 +497,7 @@ String function cmd_all_instances(model : Element, type : String):
 	else:
 		return "Element not found: " + type!
 
-Element function modify(model : Element, write : Boolean):
+Boolean function modify(model : Element, write : Boolean):
 	String cmd
 
 	output("Model loaded, ready for commands!")
@@ -507,7 +507,9 @@ Element function modify(model : Element, write : Boolean):
 		if (cmd == "help"):
 			output(cmd_help_m(write))
 		elif (cmd == "exit"):
-			return model!
+			return True!
+		elif (cmd == "drop"):
+			return False!
 		elif (cmd == "upload"):
 			output(cmd_upload(write, model))
 		elif (cmd == "instantiate_node"):
@@ -565,7 +567,6 @@ Element function modify(model : Element, write : Boolean):
 		else:
 			output("Unknown command while modelling: " + cast_value(cmd))
 			output("Use command 'help' to get a list of available commands")
-	return model!
 
 String function single_input(prompt : String):
 	if (verbose):

+ 1 - 1
interface/HUTN/includes/mini_modify.alh

@@ -1,4 +1,4 @@
-Element function modify(model : Element, write : Boolean)
+Boolean function modify(model : Element, write : Boolean)
 String function pretty_print(model : Element)
 String function single_input(prompt : String)
 Element function set_input(prompt : String)

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed Nov  8 16:39:47 2017
+Date:   Wed Nov  8 16:53:59 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server