summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend680
1 files changed, 680 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend b/rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend
new file mode 100644
index 0000000..8666e9b
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/generator/RBAModelGeneratorExtensions.xtend
@@ -0,0 +1,680 @@
+package rba.tool.editor.generator
+
+import java.util.HashMap
+import java.util.Map
+import org.eclipse.emf.ecore.EObject
+import rba.core.AbstractProperty
+import rba.core.AllocatedContent
+import rba.core.AndOperator
+import rba.core.Content
+import rba.core.ContentSet
+import rba.core.ContentValue
+import rba.core.ExistsOperator
+import rba.core.Expression
+import rba.core.ForAllOperator
+import rba.core.GetAllocatables
+import rba.core.GetContentsList
+import rba.core.GetProperty
+import rba.core.IfActionOperator
+import rba.core.IfStatement
+import rba.core.ImpliesOperator
+import rba.core.IntegerValue
+import rba.core.IsActive
+import rba.core.IsCanceled
+import rba.core.IsDisappeared
+import rba.core.IsEqualToOperator
+import rba.core.IsGreaterThanEqualOperator
+import rba.core.IsGreaterThanOperator
+import rba.core.IsLowerThanEqualOperator
+import rba.core.IsLowerThanOperator
+import rba.core.IsOn
+import rba.core.LambdaExpression
+import rba.core.MaxValue
+import rba.core.MinValue
+import rba.core.NoneValue
+import rba.core.NotOperator
+import rba.core.ObjectCompare
+import rba.core.ObjectReference
+import rba.core.OffScene
+import rba.core.OnScene
+import rba.core.OrOperator
+import rba.core.PreviousModifier
+import rba.core.Scene
+import rba.core.SetOfOperator
+import rba.core.SetProperty
+import rba.core.StandardValue
+import rba.core.Variable
+import rba.sound.AllInstanceOfSoundContent
+import rba.sound.AllInstanceOfZone
+import rba.sound.IsAttenuated
+import rba.sound.IsMuted
+import rba.sound.IsOutputted
+import rba.sound.IsSounding
+import rba.sound.OutputtingSound
+import rba.sound.Zone
+import rba.sound.ZoneSet
+import rba.view.AllInstanceOfArea
+import rba.view.AllInstanceOfViewContent
+import rba.view.Area
+import rba.view.AreaSet
+import rba.view.DisplayingContent
+import rba.view.IsDisplayed
+import rba.view.IsHidden
+import rba.view.IsVisible
+import rba.core.ContentState
+import rba.core.State
+
+class RBAModelGeneratorExtensions {
+
+ public int operandIndex = 1;
+
+ public Map<EObject, String> variableNames = new HashMap<EObject, String>();
+
+ def public compile(Expression e, String text) '''
+ «e.compile(null, text, null)»
+ '''
+
+ def public compile(Expression e, LambdaExpression le, String text1, String text2) '''
+ «IF e instanceof IsEqualToOperator »
+ «(e as IsEqualToOperator).compile(text1)»
+ «ELSEIF e instanceof IsGreaterThanOperator »
+ «(e as IsGreaterThanOperator).compile(text1)»
+ «ELSEIF e instanceof IsLowerThanOperator »
+ «(e as IsLowerThanOperator).compile(text1)»
+ «ELSEIF e instanceof IsGreaterThanEqualOperator »
+ «(e as IsGreaterThanEqualOperator).compile(text1)»
+ «ELSEIF e instanceof IsLowerThanEqualOperator »
+ «(e as IsLowerThanEqualOperator).compile(text1)»
+ «ELSEIF e instanceof AndOperator »
+ «(e as AndOperator).compile(text1)»
+ «ELSEIF e instanceof OrOperator»
+ «(e as OrOperator).compile(text1)»
+ «ELSEIF e instanceof NotOperator»
+ «(e as NotOperator).compile(text1)»
+ «ELSEIF e instanceof ImpliesOperator»
+ «(e as ImpliesOperator).compile(text1)»
+ «ELSEIF e instanceof IsActive»
+ «(e as IsActive).compile(text1)»
+ «ELSEIF e instanceof IsVisible»
+ «(e as IsVisible).compile(text1)»
+ «ELSEIF e instanceof GetAllocatables»
+ «(e as GetAllocatables).compile(le, text1, text2)»
+ «ELSEIF e instanceof IsDisplayed»
+ «(e as IsDisplayed).compile(text1)»
+ «ELSEIF e instanceof IsHidden»
+ «(e as IsHidden).compile(text1)»
+ «ELSEIF e instanceof DisplayingContent»
+ «(e as DisplayingContent).compile(le, text1, text2)»
+ «ELSEIF e instanceof AllocatedContent»
+ «(e as AllocatedContent).compile(le, text1, text2)»
+ «ELSEIF e instanceof GetContentsList»
+ «(e as GetContentsList).compile(le, text1, text2)»
+ «ELSEIF e instanceof ContentValue»
+ «(e as ContentValue).compile(le, text1, text2)»
+ «ELSEIF e instanceof ObjectReference»
+ «(e as ObjectReference).compile(le, text1, text2)»
+ «ELSEIF e instanceof PreviousModifier»
+ «(e as PreviousModifier).compile(text1)»
+ «ELSEIF e instanceof ObjectCompare»
+ «(e as ObjectCompare).compile(text1)»
+ «ELSEIF e instanceof ForAllOperator»
+ «(e as ForAllOperator).compile(text1)»
+ «ELSEIF e instanceof ExistsOperator»
+ «(e as ExistsOperator).compile(text1)»
+ «ELSEIF e instanceof AllInstanceOfArea»
+ «(e as AllInstanceOfArea).compile(le, text1, text2)»
+ «ELSEIF e instanceof AllInstanceOfViewContent»
+ «(e as AllInstanceOfViewContent).compile(le, text1, text2)»
+ «ELSEIF e instanceof AllInstanceOfZone»
+ «(e as AllInstanceOfZone).compile(le, text1, text2)»
+ «ELSEIF e instanceof AllInstanceOfSoundContent»
+ «(e as AllInstanceOfSoundContent).compile(le, text1, text2)»
+ «ELSEIF e instanceof SetOfOperator»
+ «(e as SetOfOperator).compile(le, text1, text2)»
+ «ELSEIF e instanceof IfStatement»
+ «(e as IfStatement).compile(le, text1, text2)»
+ «ELSEIF e instanceof IsOn»
+ «(e as IsOn).compile(text1)»
+ «ELSEIF e instanceof IsDisappeared»
+ «(e as IsDisappeared).compile(text1)»
+ «ELSEIF e instanceof IsCanceled»
+ «(e as IsCanceled).compile(text1)»
+ «ELSEIF e instanceof GetProperty»
+ «(e as GetProperty).compile(le, text1, text2)»
+ «ELSEIF e instanceof SetProperty»
+ «(e as SetProperty).compile(le, text1, text2)»
+ «ELSEIF e instanceof OffScene»
+ «(e as OffScene).compile(text1)»
+ «ELSEIF e instanceof OnScene»
+ «(e as OnScene).compile(text1)»
+ «ELSEIF e instanceof IsSounding»
+ «(e as IsSounding).compile(text1)»
+ «ELSEIF e instanceof IsOutputted»
+ «(e as IsOutputted).compile(text1)»
+ «ELSEIF e instanceof IsMuted»
+ «(e as IsMuted).compile(text1)»
+ «ELSEIF e instanceof OutputtingSound»
+ «(e as OutputtingSound).compile(le, text1, text2)»
+ «ELSEIF e instanceof IsAttenuated»
+ «(e as IsAttenuated).compile(text1)»
+ «ELSEIF e instanceof IfActionOperator»
+ «(e as IfActionOperator).compile(le, text1, text2)»
+ «ELSEIF e instanceof MaxValue»
+ «(e as MaxValue).compile(text1)»
+ «ELSEIF e instanceof MinValue»
+ «(e as MinValue).compile(text1)»
+ «ELSEIF e instanceof NoneValue»
+ «(e as NoneValue).compile(text1)»
+ «ELSEIF e instanceof StandardValue»
+ «(e as StandardValue).compile(text1)»
+ «ELSEIF e instanceof IntegerValue»
+ «(e as IntegerValue).compile(text1)»
+ «ENDIF»
+ '''
+
+ def public compile(IsEqualToOperator o, String addExpressionStatement) '''
+ «var name = "isEqualToOperator_" + operandIndex++»
+ ARBIsEqualToOperator «name» = ArbFactory.eINSTANCE.createARBIsEqualToOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsGreaterThanOperator o, String addExpressionStatement) '''
+ «var name = "isGreaterThanOperator_" + operandIndex++»
+ ARBIsGreaterThanOperator «name» = ArbFactory.eINSTANCE.createARBIsGreaterThanOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsLowerThanOperator o, String addExpressionStatement) '''
+ «var name = "isLowerThanOperator_" + operandIndex++»
+ ARBIsLowerThanOperator «name» = ArbFactory.eINSTANCE.createARBIsLowerThanOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsGreaterThanEqualOperator o, String addExpressionStatement) '''
+ «var name = "isGreaterThanEqualOperator_" + operandIndex++»
+ ARBIsGreaterThanEqualOperator «name» = ArbFactory.eINSTANCE.createARBIsGreaterThanEqualOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsLowerThanEqualOperator o, String addExpressionStatement) '''
+ «var name = "isLowerThanEqualOperator_" + operandIndex++»
+ ARBIsLowerThanEqualOperator «name» = ArbFactory.eINSTANCE.createARBIsLowerThanEqualOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AndOperator o, String addExpressionStatement) '''
+ «var name = "andOperator_" + operandIndex++»
+ ARBAndOperator «name» = ArbFactory.eINSTANCE.createARBAndOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(OrOperator o, String addExpressionStatement) '''
+ «var name = "orOperator_" + operandIndex++»
+ ARBOrOperator «name» = ArbFactory.eINSTANCE.createARBOrOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(NotOperator o, String addExpressionStatement) '''
+ «var name = "notOperator_" + operandIndex++»
+ ARBNotOperator «name» = ArbFactory.eINSTANCE.createARBNotOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(ImpliesOperator o, String addExpressionStatement) '''
+ «var name = "impliesOperator_" + operandIndex++»
+ ARBImpliesOperator «name» = ArbFactory.eINSTANCE.createARBImpliesOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(ObjectCompare o, String addExpressionStatement) '''
+ «var name = "objectCompair_" + operandIndex++»
+ ARBObjectCompare «name» = ArbFactory.eINSTANCE.createARBObjectCompare();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsActive o, String addExpressionStatement) '''
+ «var name = "isActive_" + operandIndex++»
+ ARBIsActive «name» = ArbFactory.eINSTANCE.createARBIsActive();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsVisible o, String addExpressionStatement) '''
+ «var name = "isVisible_" + operandIndex++»
+ ARBIsVisible «name» = ArbFactory.eINSTANCE.createARBIsVisible();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(GetAllocatables o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "getAllocatables_" + operandIndex++»
+ ARBGetAllocatables «name» = ArbFactory.eINSTANCE.createARBGetAllocatables();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsDisplayed o, String addExpressionStatement) '''
+ «var name = "isDisplayed_" + operandIndex++»
+ ARBIsDisplayed «name» = ArbFactory.eINSTANCE.createARBIsDisplayed();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsHidden o, String addExpressionStatement) '''
+ «var name = "isHidden_" + operandIndex++»
+ ARBIsHidden «name» = ArbFactory.eINSTANCE.createARBIsHidden();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(DisplayingContent o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "displayingContent_" + operandIndex++»
+ ARBDisplayingContent «name» = ArbFactory.eINSTANCE.createARBDisplayingContent();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AllocatedContent o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "allocatedContent_" + operandIndex++»
+ ARBAllocatedContent «name» = ArbFactory.eINSTANCE.createARBAllocatedContent();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(GetContentsList o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "getContentsList_" + operandIndex++»
+ ARBGetContentsList «name» = ArbFactory.eINSTANCE.createARBGetContentsList();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(ContentValue o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "contentValue_" + operandIndex++»
+ ARBContentValue «name» = ArbFactory.eINSTANCE.createARBContentValue();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ public static final String DummyIndicateCharacter = "|"; //$NON-NLS-1$
+
+ def public compile(ObjectReference o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "objectReference_" + operandIndex++»
+ ARBObjectReference «name» = ArbFactory.eINSTANCE.createARBObjectReference();
+ «name».setRefObject(«IF o.refObject instanceof Scene »model.getScene("«o.refObject.name»"));«ELSEIF o.refObject instanceof ContentState »model.getContentState("«(o.refObject as ContentState).owner.name»", "«o.refObject.name»"));
+ «ELSEIF o.refObject instanceof AbstractProperty »model.getProperty("«(o.refObject as AbstractProperty).owner.name»", "«o.refObject.name»"));«ELSEIF o.refObject instanceof Zone »model.getAllocatable("«o.refObject.name»"));«ELSEIF o.refObject instanceof ZoneSet»model.getAllocatableSet("«o.refObject.name»"));«ELSEIF o.refObject instanceof Area »model.getAllocatable("«o.refObject.name»"));«ELSEIF o.refObject instanceof Content»model.getContent("«o.refObject.name»"));«ELSEIF o.refObject instanceof AreaSet»model.getAllocatableSet("«o.refObject.name»"));«ELSEIF o.refObject instanceof ContentSet»model.getContentSet("«o.refObject.name»"));«ELSEIF o.refObject instanceof Variable»«IF variableNames.containsKey(o.refObject)»«variableNames.get(o.refObject)»«ELSE»null«ENDIF»);«ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(PreviousModifier o, String addExpressionStatement) '''
+ «var name = "previousModifier_" + operandIndex++»
+ ARBPreviousModifier «name» = ArbFactory.eINSTANCE.createARBPreviousModifier();
+ «IF o.objReference !== null»
+ «o.objReference.compile(name + ".setObjReference")»
+ «ELSE»
+ «name».setObjReference(null);
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(ForAllOperator o, String addExpressionStatement) '''
+ «var name = "forAllOperator_" + operandIndex++»
+ ARBForAllOperator «name» = ArbFactory.eINSTANCE.createARBForAllOperator();
+ «IF o.operand !== null && o.operand.size > 0 && o.lambda !== null»
+ «(o.operand.get(0)).compile(o.lambda, name + ".getOperands().add", name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(ExistsOperator o, String addExpressionStatement) '''
+ «var name = "existsOperator_" + operandIndex++»
+ ARBExistsOperator «name» = ArbFactory.eINSTANCE.createARBExistsOperator();
+ «IF o.operand !== null && o.operand.size > 0 && o.lambda !== null»
+ «(o.operand.get(0)).compile(o.lambda, name + ".getOperands().add", name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(LambdaExpression o, String addExpressionStatement, String refContextObjectName, String setExpressionStatement) '''
+ «var name = "lambdaExpression_" + operandIndex++»
+ ARBLambdaExpression «name» = ArbFactory.eINSTANCE.createARBLambdaExpression();
+ «name».setContext(«refContextObjectName»);
+ «IF o.x !== null && o.bodyText !== null»
+ «(o.x).compile(name + ".setX", setExpressionStatement)»
+ «(o.bodyText).compile(name + ".setBodyText")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(Variable v, String addExpressionStatement, String refExpressionObjectName) '''
+ «var name = "variable_" + operandIndex++»
+ «variableNames.put(v, name)»
+ ARBVariable «name» = ArbFactory.eINSTANCE.createARBVariable();
+ «name».setDescription(«IF v.description === null»""«ELSEIF v.description.empty»""«ELSE»«v.description»«ENDIF»);
+ «name».setName("«v.name»");
+ «name».setType(ARB«v.expressionType.class.simpleName».«v.expressionType.getName»);
+ «name».setExpression(«refExpressionObjectName»);
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AllInstanceOfArea o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "allInstanceOfArea_" + operandIndex++»
+ ARBAllInstanceOfArea «name» = ArbFactory.eINSTANCE.createARBAllInstanceOfArea();
+ «name».setRefObject(model.getAllArea());
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AllInstanceOfViewContent o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "allInstanceOfViewContent_" + operandIndex++»
+ ARBAllInstanceOfContent «name» = ArbFactory.eINSTANCE.createARBAllInstanceOfContent();
+ «name».setRefObject(model.getAllViewContent());
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AllInstanceOfZone o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "allInstanceOfZone_" + operandIndex++»
+ ARBAllInstanceOfZone «name» = ArbFactory.eINSTANCE.createARBAllInstanceOfZone();
+ «name».setRefObject(model.getAllZone());
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(AllInstanceOfSoundContent o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "allInstanceOfSoundContent_" + operandIndex++»
+ ARBAllInstanceOfSoundContent «name» = ArbFactory.eINSTANCE.createARBAllInstanceOfSoundContent();
+ «name».setRefObject(model.getAllSoundContent());
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(SetOfOperator o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "setOfOperator_" + operandIndex++»
+ ARBSetOfOperator «name» = ArbFactory.eINSTANCE.createARBSetOfOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IfStatement o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "ifStatement_" + operandIndex++»
+ ARBIfStatement «name» = ArbFactory.eINSTANCE.createARBIfStatement();
+ «IF o.condition !== null»
+ «(o.condition).compile(name + ".setCondition")»
+ «ENDIF»
+ «IF o.thenExpression !== null»
+ «(o.thenExpression).compile(name + ".setThenExpression")»
+ «ENDIF»
+ «IF o.elseExpression !== null»
+ «(o.elseExpression).compile(name + ".setElseExpression")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsOn o, String addExpressionStatement) '''
+ «var name = "isOn_" + operandIndex++»
+ ARBIsOn «name» = ArbFactory.eINSTANCE.createARBIsOn();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsDisappeared o, String addExpressionStatement) '''
+ «var name = "isDisappeared_" + operandIndex++»
+ ARBIsDisappeared «name» = ArbFactory.eINSTANCE.createARBIsDisappeared();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsCanceled o, String addExpressionStatement) '''
+ «var name = "isCanceled_" + operandIndex++»
+ ARBIsCanceled «name» = ArbFactory.eINSTANCE.createARBIsCanceled();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(GetProperty o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "getProperty_" + operandIndex++»
+ ARBGetProperty «name» = ArbFactory.eINSTANCE.createARBGetProperty();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(SetProperty o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "setProperty_" + operandIndex++»
+ ARBSetProperty «name» = ArbFactory.eINSTANCE.createARBSetProperty();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(OffScene o, String addExpressionStatement) '''
+ «var name = "offScene_" + operandIndex++»
+ ARBOffScene «name» = ArbFactory.eINSTANCE.createARBOffScene();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(OnScene o, String addExpressionStatement) '''
+ «var name = "onScene_" + operandIndex++»
+ ARBOnScene «name» = ArbFactory.eINSTANCE.createARBOnScene();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsSounding o, String addExpressionStatement) '''
+ «var name = "isSounding_" + operandIndex++»
+ ARBIsSounding «name» = ArbFactory.eINSTANCE.createARBIsSounding();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsOutputted o, String addExpressionStatement) '''
+ «var name = "isOutputted_" + operandIndex++»
+ ARBIsOutputted «name» = ArbFactory.eINSTANCE.createARBIsOutputted();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsMuted o, String addExpressionStatement) '''
+ «var name = "isMuted_" + operandIndex++»
+ ARBIsMuted «name» = ArbFactory.eINSTANCE.createARBIsMuted();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(OutputtingSound o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "outputtingSound_" + operandIndex++»
+ ARBOutputtingSound «name» = ArbFactory.eINSTANCE.createARBOutputtingSound();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IsAttenuated o, String addExpressionStatement) '''
+ «var name = "isAttenuated_" + operandIndex++»
+ ARBIsAttenuated «name» = ArbFactory.eINSTANCE.createARBIsAttenuated();
+ «IF o.operand !== null && o.operand.size > 0»
+ «(o.operand.get(0)).compile(name + ".getOperands().add")»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IfActionOperator o, LambdaExpression le, String addExpressionStatement, String parentName) '''
+ «var name = "ifActionOperator_" + operandIndex++»
+ ARBIfActionOperator «name» = ArbFactory.eINSTANCE.createARBIfActionOperator();
+ «IF o.operand !== null && o.operand.size > 0»
+ «FOR op : o.operand»
+ «op.compile(name + ".getOperands().add")»
+ «ENDFOR»
+ «ENDIF»
+ «IF le !== null && parentName !== null && !parentName.empty»
+ «le.compile(parentName + ".setLambda", parentName, name)»
+ «ENDIF»
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(MaxValue o, String addExpressionStatement) '''
+ «var name = "maxValue_" + operandIndex++»
+ ARBMaxValue «name» = ArbFactory.eINSTANCE.createARBMaxValue();
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(MinValue o, String addExpressionStatement) '''
+ «var name = "minValue_" + operandIndex++»
+ ARBMinValue «name» = ArbFactory.eINSTANCE.createARBMinValue();
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(NoneValue o, String addExpressionStatement) '''
+ «var name = "noneValue_" + operandIndex++»
+ ARBNoneValue «name» = ArbFactory.eINSTANCE.createARBNoneValue();
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(StandardValue o, String addExpressionStatement) '''
+ «var name = "standardValue_" + operandIndex++»
+ ARBStandardValue «name» = ArbFactory.eINSTANCE.createARBStandardValue();
+ «addExpressionStatement»(«name»);
+ '''
+
+ def public compile(IntegerValue o, String addExpressionStatement) '''
+ «var name = "integerValue_" + operandIndex++»
+ ARBIntegerValue «name» = ArbFactory.eINSTANCE.createARBIntegerValue();
+ «name».setValue(«o.value»);
+ «addExpressionStatement»(«name»);
+ '''
+} \ No newline at end of file