import modelicaQVTUtils.ModelicaUtils; modeltype Program uses 'http://www.openmodelica.org/openmodelica.abstract.syntax/Program'; modeltype Exp uses 'http://www.openmodelica.org/openmodelica.unparsed/Exp'; modeltype ComponentRef uses 'http://www.openmodelica.org/openmodelica.unparsed/ComponentRef'; modeltype FunctionArgs uses 'http://www.openmodelica.org/openmodelica.unparsed/FunctionArgs'; modeltype Equation uses 'http://www.openmodelica.org/openmodelica.unparsed/Equation'; modeltype AlgorithmItem uses 'http://www.openmodelica.org/openmodelica.unparsed/AlgorithmItem'; modeltype ElementArg uses 'http://www.openmodelica.org/openmodelica.unparsed/ElementArg'; // in-place transformation transformation Modelica2ModelicaUnparsed(in modelicaModel:Program, out modelicaModelUnparsed:Program); // creation of instances of previous abstract classes is needed! main() { var parsedModelicaModel := modelicaModel.copy(); modelicaModelUnparsed := parsedModelicaModel.rootObjects()![Program::PROGRAM].deepclone().oclAsType(Program); modelicaModelUnparsed.objectsOfType(Exp::uExp)->forEach(expression) { var unparsedExp : String = loadExpression(expression); expression.unparsedExp := unparsedExp; }; modelicaModelUnparsed.objectsOfType(ComponentRef::uComponentRef)->forEach(componentRef) { var unparsedcomponentRef := loadComponentRef(componentRef); componentRef.unparsedComponentRef := unparsedcomponentRef; }; modelicaModelUnparsed.objectsOfType(FunctionArgs::uFunctionArguments)->forEach(functionArguments) { var unparsedFunctionArguments := loadFunctionArgs(functionArguments); functionArguments.unparsedFunctionArgs := unparsedFunctionArguments; }; modelicaModelUnparsed.objectsOfType(Equation::uEquation)->forEach(equation) { var unparsedEquation := loadEquation(equation); equation.unparsedEquation := unparsedEquation; }; modelicaModelUnparsed.objectsOfType(AlgorithmItem::uAlgorithmItem)->forEach(algorithmItem) { var unparsedAlgorithmItem := loadAlgorithmItem(algorithmItem); algorithmItem.unparsedAlgorithmItem := unparsedAlgorithmItem; }; modelicaModelUnparsed.objectsOfType(ElementArg::uElementArg)->forEach(elementArg) { var unparsedElementArg := loadElementArg(elementArg); elementArg.unparsedElementArg := unparsedElementArg; }; log("Transformation Modelica2ModelicaUnparsed finished"); } -- black-box helper defined in modelicaQVTUtils.ModelicaUtils. -- helper loadComponentRef(in componentReference : ComponentRef::uComponentRef) : String -- black-box helper defined in modelicaQVTUtils.ModelicaUtils. -- helper loadExpression(in expression : Exp::uExp) : String; -- black-box helper defined in modelicaQVTUtils.ModelicaUtils. -- helper loadFunctionArgs(in functionArgs : FunctionArgs::uFunctionArguments) : String -- black-box helper defined in modelicaQVTUtils.ModelicaUtils. -- helper loadEquation(in equation : Equation::uEquation) : String -- black-box helper defined in modelicaQVTUtils.ModelicaUtils. -- helper loadAlgorithmItem(in algorithmItem : AlgorithmItem::uAlgorithmItem) : String