| «IMPORT metaabm» |
| «IMPORT metaabm::act» |
| «IMPORT metaabm::function» |
| «IMPORT emf» |
| |
| «EXTENSION metaabm::tmpl::names» |
| «EXTENSION metaabm::tmpl::types» |
| «EXTENSION metaabm::tmpl::infer» |
| «EXTENSION metaabm::tmpl::util» |
| |
| «REM»Author: Miles Parker«ENDREM» |
| |
| «DEFINE Model FOR SContext-» |
| «EXPAND Files-» |
| «EXPAND Model FOREACH agents-» |
| «ENDDEFINE» |
| |
| «DEFINE Model FOR SAgent-» |
| «EXPAND Files-» |
| «ENDDEFINE» |
| |
| «DEFINE Files FOR SAgent-» |
| «EXPAND ClassFile-» |
| «EXPAND ClassFile FOREACH styles-» |
| «EXPAND ClassFile FOREACH attributes.typeSelect(SState)-» |
| «ENDDEFINE» |
| |
| «DEFINE ClassFile FOR IID-» |
| «IF generate()-» |
| «FILE javaFileLoc()-» |
| «EXPAND ClassText» |
| «ENDFILE-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE ClassInheiritance FOR Object-»«ENDDEFINE» |
| «DEFINE ClassInheiritance FOR SAgent»«ENDDEFINE» |
| «DEFINE ClassInheiritance FOR SContext»«ENDDEFINE» |
| «DEFINE ClassInheiritance FOR SStyle»«ENDDEFINE» |
| |
| «DEFINE ClassKeyword FOR IID-»undefined«ENDDEFINE» |
| «DEFINE ClassKeyword FOR SImplemented-»class«ENDDEFINE» |
| «DEFINE ClassKeyword FOR SAttribute-»enum«ENDDEFINE» |
| |
| «DEFINE ClassName FOR IID-»«typeName()»«ENDDEFINE» |
| |
| «DEFINE Modifier FOR EObject-»«ENDDEFINE» |
| «DEFINE Modifier FOR SContext-»«ENDDEFINE» |
| |
| «DEFINE ExtendType FOR EObject-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SProjection-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SGrid-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SContinuousSpace-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SNetwork-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SGeography-»Object«ENDDEFINE» |
| «DEFINE ExtendType FOR SContext-»«typeName()»«ENDDEFINE» |
| «DEFINE ExtendType FOR SAgent-»«typeName()»«ENDDEFINE» |
| «DEFINE ExtendType FOR SAttribute-»«typeName()»«ENDDEFINE» |
| «DEFINE ExtendType FOR ASink-» |
| «IF function.color()-»java.awt.Color |
| «ELSEIF function.shape()-»java.awt.Shape |
| «ELSEIF function.id().startsWith("graphic")-»java.awt.Shape |
| «ELSEIF function.id() == "randomState"-»«inputs.get(0).value.typeName()» |
| «ELSE-»«typeName()»«ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE ClassComments FOR IID-» |
| * «label» Java Implementation. |
| * «descrText()» |
| «ENDDEFINE» |
| |
| «DEFINE ClassText FOR IID-» |
| package «package()»; |
| |
| «EXPAND Imports» |
| |
| «IF genComments()-» |
| /** |
| * <!-- begin-user-doc --> |
| «EXPAND ClassComments-» |
| * Generated by AMF for model: «modelName()» in project: «buildProject()» «IF testing()-» (testing)«ENDIF» |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ENDIF-» |
| «EXPAND Class-» |
| «ENDDEFINE» |
| |
| «DEFINE Imports FOR IID» |
| «ENDDEFINE» |
| |
| «DEFINE Imports FOR SStyle» |
| «ENDDEFINE» |
| |
| «DEFINE Imports FOR SAgent» |
| «FOREACH children AS child» |
| import «child.getPackage()».«child.getName()»; |
| «ENDFOREACH» |
| import org.eclipse.amp.escape.runtime.extension.IAgentChild; |
| «ENDDEFINE» |
| |
| |
| «DEFINE ClassImplementation FOR IID» |
| «EXPAND Fields-» |
| «EXPAND Extension» |
| «EXPAND Constructor-» |
| «EXPAND Body-» |
| «EXPAND Methods-» |
| «EXPAND Accessors-» |
| «ENDDEFINE» |
| |
| «DEFINE Extension FOR IID» |
| «ENDDEFINE» |
| |
| «DEFINE Extension FOR SAgent» |
| private List<IAgentChild> children; |
| |
| public List<IAgentChild> getChildren(){ |
| return children; |
| } |
| «ENDDEFINE» |
| |
| «DEFINE ClassImplementation FOR SState-» |
| «FOREACH options AS option SEPARATOR ","-» |
| «option.id()»("«option.label»") |
| «ENDFOREACH-»; |
| |
| «EXPAND GenerateComment» |
| private final String name; |
| |
| «EXPAND GenerateComment» |
| private «typeName()»(String name) { |
| this.name = name; |
| } |
| «EXPAND GenerateComment» |
| public String toString() { |
| return name; |
| } |
| «ENDDEFINE» |
| |
| «DEFINE Class FOR IID-» |
| «IF (testing())-» |
| import static org.junit.Assert.*; |
| «ENDIF-» |
| public «EXPAND ClassKeyword» «EXPAND ClassName» «EXPAND ClassInheiritance» { |
| «EXPAND ClassImplementation-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE Field FOR IID-» |
| «IF fieldExists()-» |
| «IF genComments()-» |
| /** |
| * <!-- begin-user-doc --> |
| * «descrText()» |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ELSE » |
| «EXPAND GenerateComment» |
| «ENDIF-» |
| private «EXPAND Modifier-»«EXPAND ExtendType-» «fieldName()» = «defaultValue()»; |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE Constructor FOR IID-» |
| «IF genComments()-» |
| /** |
| * <!-- begin-user-doc --> |
| * Constructs a new «label». |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ELSE » |
| «EXPAND GenerateComment» |
| «ENDIF-» |
| public «EXPAND ClassName»() { |
| «EXPAND ConstructorBody-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE Constructor FOR SStyle-»«ENDDEFINE» |
| |
| «DEFINE ProtectedRegion(String uniqueUseName) FOR IID-» |
| «IF impl().mode == SImplementationMode::GenerateEmpty || impl().mode == SImplementationMode::GenerateProtected-» |
| «PROTECT CSTART "/*" CEND "*/" ID qualName() + "_" + uniqueUseName-» |
| «ENDPROTECT-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE Method FOR IID-» |
| «IF genComments()-» |
| «EXPAND MethodComment-» |
| «ENDIF-» |
| «IF testing()-» |
| @org.junit.Test |
| «ENDIF-» |
| «EXPAND MethodImpl-» |
| «ENDDEFINE» |
| |
| «DEFINE MethodComment FOR IID-» |
| /** |
| * <!-- begin-user-doc --> |
| * «descrText()» |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ENDDEFINE» |
| |
| «DEFINE MethodImpl FOR ADerive-» |
| public «attribute.typeName()» «attribute.getterName()»() { |
| «EXPAND ProtectedRegion(methodName())-» |
| «IF impl().mode != SImplementationMode::GenerateEmpty-» |
| «EXPAND ActionBody-» |
| «ENDIF-» |
| «IF !allTargets.typeSelect(AQuery).isEmpty-» |
| return «attribute.defaultValue()»; |
| «ENDIF-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE MethodImpl FOR IID-» |
| public «methodTypeName()» «methodName()»(«methodParamList()») { |
| «EXPAND ProtectedRegion(methodName())-» |
| «IF impl().mode != SImplementationMode::GenerateEmpty-» |
| «EXPAND ActionBody-» |
| «ENDIF-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE RootActivity FOR AMethod-»«ENDDEFINE» |
| «DEFINE RootActivity FOR IAct-»«ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR ABuild-»«ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR AGroup-» |
| «EXPAND MethodPotential (within) FOREACH members-» |
| «ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR AMethod-» |
| «IF (generate && sources.size > 0 && !id().startsWith("assert") && (!id().startsWith("test") || testing()))-» |
| «EXPAND Method» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR ADiffuse-»«ENDDEFINE» |
| «DEFINE MethodPotential (AAct within) FOR ASink-»«ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR ARoot-» |
| «EXPAND Method-» |
| «ENDDEFINE» |
| «DEFINE MethodPotential (AAct within) FOR IAct-»«ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR FFunction-» |
| «IF id() == "randomWeighted"-» |
| «EXPAND Method-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE MethodPotential (AAct within) FOR AEvaluate-» |
| «IF function.multiValue-» |
| «EXPAND Method-» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE MethodPotential (AAct within) FOR AQuery-»«ENDDEFINE» |
| |
| «DEFINE Methods FOR IID-»«ENDDEFINE» |
| «DEFINE Methods FOR SAgent-» |
| «IF rootActivity != null-» |
| «EXPAND MethodPotential (null) FOR rootActivity-» |
| «ENDIF-» |
| «EXPAND MethodPotential (null) FOREACH allGenericFunctions()-» |
| «ENDDEFINE» |
| |
| «DEFINE ActionBody FOR IID-»//****No body defined for: «metaType»«ENDDEFINE» |
| «DEFINE ActionBody FOR ARoot-» |
| «IF testing()-» |
| «PROTECT CSTART "/*" CEND "*/" ID typeName() + "_" + methodName() + "_Pre"» |
| //Pre-Conditions Here |
| «ENDPROTECT» |
| «ENDIF-» |
| «EXPAND Block({}, false, true)-» |
| «IF testing()-» |
| «PROTECT CSTART "/*" CEND "*/" ID typeName() + "_" + methodName() + "_Post"» |
| //Post-Conditions Here |
| «ENDPROTECT» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE ActionBody FOR AInitialize-» |
| «EXPAND Block({}, false, true)-» |
| «ENDDEFINE» |
| «DEFINE ActionBody FOR AMethod-» |
| «IF (body != null && (testing() || body.startsWith("assert")))-» |
| «body» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE ActionBody FOR AEvaluate-» |
| «IF function.multiValue-» |
| «LET ((AMultiValue) inputs.get(0).value) AS multi0-» |
| «FOREACH inputs.withoutFirst() AS input-» |
| «IF multi0.values.isEmpty-» |
| double «input.value.id()» = «input.paramBase()»(); |
| «ELSE-» |
| double «input.value.id()» = 0.0; |
| «EXPAND MultiBlock((List[SState]) multi0.values, {}) FOR input-» |
| «ENDIF-» |
| «ENDFOREACH-» |
| «ENDLET-» |
| «IF function.id().toLowerCase().contains("uniform")-» |
| return randomInRange(«inputs.get(1).value.id()», «inputs.get(2).value.id()»); |
| «ELSE-» |
| return «inputs.get(1).value.id()»; |
| «ENDIF-» |
| «ENDIF-» |
| «ENDDEFINE» |
| «REM»All actable behaviors take place within a single method«ENDREM» |
| «DEFINE ActionBody FOR SActable-» |
| «EXPAND ActionBody FOREACH ((AGroup) rootActivity).roots-» |
| «ENDDEFINE» |
| |
| «DEFINE SetterSideEffect FOR IID-»«ENDDEFINE» |
| «DEFINE SetterSideEffect FOR SAttribute-» |
| «EXPAND AccessorClients FOREACH watchers()-» |
| «ENDDEFINE» |
| |
| «DEFINE SetterPotential FOR IID-» |
| «EXPAND Setter-» |
| «ENDDEFINE» |
| |
| «DEFINE SetterPotential FOR SAttribute-» |
| «IF !immutable && !derived-» |
| «EXPAND Setter-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE SetterMethod FOR IID-» |
| public «EXPAND Modifier»void «setterName()»(«EXPAND ExtendType-» _«paramName()-») { |
| «fieldName()» = _«paramName()»; |
| «EXPAND SetterSideEffect-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE Setter FOR IID-» |
| «IF genComments()-» |
| /** |
| * <!-- begin-user-doc --> |
| * Sets the «label» property for «parent().label». |
| * «descrText()» |
| * @param _«paramName()» the new «label» value |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ELSE » |
| «EXPAND GenerateComment» |
| «ENDIF-» |
| «EXPAND SetterMethod-» |
| «ENDDEFINE» |
| |
| «DEFINE GetterPotential FOR IID-» |
| «EXPAND Getter-» |
| «ENDDEFINE» |
| |
| «DEFINE GetterPotential FOR SAttribute-» |
| «IF !derived-» |
| «EXPAND Getter-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE GetterMethod FOR IID-» |
| public «EXPAND Modifier»«EXPAND ExtendType» «getterName()»() { |
| return «fieldName()»; |
| } |
| «ENDDEFINE» |
| |
| «DEFINE Getter FOR IID-» |
| «IF genComments()-» |
| /** |
| * <!-- begin-user-doc --> |
| * Gets the «label» property for «parent().label». |
| * @return «descrText()» |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| «ENDIF-» |
| «EXPAND GetterMethod-» |
| «ENDDEFINE» |
| |
| «DEFINE Accessor FOR IID-» |
| «EXPAND GetterPotential-» |
| |
| «EXPAND SetterPotential-» |
| |
| «ENDDEFINE» |
| |
| «DEFINE AccessorClients FOR EObject-» |
| «ENDDEFINE» |
| «DEFINE AccessorClients FOR AWatch-» |
| «id()»(); |
| «ENDDEFINE» |
| |
| «DEFINE Fields FOR AGroup-» |
| «EXPAND Fields FOREACH members-» |
| «ENDDEFINE» |
| |
| «DEFINE Fields FOR SAttributed-» |
| «EXPAND Field FOREACH attributes-» |
| «EXPAND OtherFields-» |
| «ENDDEFINE» |
| |
| «DEFINE Fields FOR IID-» |
| «ENDDEFINE» |
| |
| «DEFINE OtherFields FOR SAgent-» |
| «ENDDEFINE» |
| |
| «DEFINE OtherFields FOR SContext-» |
| «EXPAND Fields FOREACH projections-» |
| «IF (rootActivity != null)-» |
| «EXPAND Fields FOR rootActivity-» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE OtherFields FOR SProjection-» |
| «EXPAND Field-» |
| «ENDDEFINE» |
| «DEFINE OtherFields FOR IID-»«ENDDEFINE» |
| |
| «DEFINE Accessors FOR AGroup-» |
| «EXPAND Accessors FOREACH members-» |
| «ENDDEFINE» |
| «DEFINE Accessors FOR SAttributed-» |
| «EXPAND Accessor FOREACH attributes-» |
| «EXPAND OtherAccessors-» |
| «ENDDEFINE» |
| «DEFINE Accessors FOR IID-»«ENDDEFINE» |
| «DEFINE OtherAccessors FOR SAgent-» |
| «ENDDEFINE» |
| «DEFINE OtherAccessors FOR SContext-» |
| «EXPAND Accessors FOREACH projections-» |
| «IF (rootActivity != null)-» |
| «EXPAND Accessors FOR rootActivity-» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE OtherAccessors FOR SProjection-» |
| «EXPAND Accessor-» |
| «ENDDEFINE» |
| «DEFINE OtherAccessors FOR IID-»«ENDDEFINE» |
| |
| «DEFINE ConstructorBody FOR SContext-» |
| «EXPAND ConstructorBody FOREACH attributes-» |
| «EXPAND ConstructorBody FOREACH projections-» |
| «EXPAND ConstrAgentChildren» |
| «ENDDEFINE» |
| «DEFINE ConstructorBody FOR SAttribute-» |
| «IF !fieldExists() && (defaultValue().length > 0)-» |
| «setterName()»(«defaultValue»); |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE ConstructorBody FOR SProjection-» |
| «EXPAND ConstructorBody FOREACH attributes-» |
| «ENDDEFINE» |
| |
| «DEFINE ConstructorBody FOR SAgent-» |
| «EXPAND ConstrAgentChildren» |
| «ENDDEFINE» |
| |
| «DEFINE ConstrAgentChildren FOR SAgent» |
| children = new ArrayList<IAgentChild>(); |
| «FOREACH children AS child» |
| children.add(new «child.getName()»()); |
| «ENDFOREACH» |
| «ENDDEFINE» |
| |
| «DEFINE ConstructorBody FOR IID-»«ENDDEFINE» |
| |
| «DEFINE UtilBody FOR IID-»«ENDDEFINE» |
| «DEFINE UtilBody FOR SStyle-»«ENDDEFINE» |
| «DEFINE UtilBody FOR SImplemented-» |
| //todo, make this a useful value for evaluating compatibility of different versions of generated classes |
| «EXPAND GenerateComment» |
| private static final long serialVersionUID = 89989998L; |
| |
| «EXPAND GenerateComment» |
| private static long nextUniqueID; |
| |
| «EXPAND GenerateComment» |
| private long uniqueID; |
| |
| «EXPAND GenerateComment» |
| public long getUID() { |
| if (uniqueID == 0) { |
| uniqueID = nextUniqueID++; |
| } |
| return uniqueID; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Clones the agent, ensuring that a unique id is assigned. |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Object clone() { |
| try { |
| «typeName()» clone = («typeName()») super.clone(); |
| clone.uniqueID = 0; |
| return clone; |
| } catch (Exception e) { |
| throw new RuntimeException("Unexpected cloning exception: " + e); |
| } |
| } |
| |
| «IF testing()-» |
| «EXPAND GenerateComment» |
| @org.junit.Test |
| public void dummy() { |
| assertTrue(true); |
| } |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE Body FOR IID-»«EXPAND UtilBody»«ENDDEFINE» |
| «DEFINE Body FOR SStyle-»«EXPAND UtilBody»«ENDDEFINE» |
| «DEFINE Body FOR SAgent-» |
| «EXPAND UtilBody» |
| «ENDDEFINE» |
| «DEFINE Body FOR SContext-» |
| «EXPAND UtilBody» |
| «EXPAND Builder FOREACH projections-» |
| «EXPAND Builder FOREACH agents-» |
| «IF rootActivity != null-» |
| «EXPAND Builder FOR rootActivity-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE Builder FOR AGroup-» |
| «EXPAND Builder FOREACH members-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ABuild-» |
| «FOREACH targets.typeSelect(AMethod) AS method» |
| «method.body» |
| «ENDFOREACH» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ACreateAgents-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ALoadAgents-» |
| «EXPAND Builder FOR agent-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ABuildGrid-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ABuildGeography-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ABuildNetwork-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR ABuildSpace-» |
| «EXPAND InnerBlock({}, false) FOREACH targets-» |
| «ENDDEFINE» |
| «DEFINE Builder FOR IAct-»«ENDDEFINE» |
| «DEFINE Builder FOR SAgent-»«ENDDEFINE» |
| «DEFINE Builder FOR SContext-»«ENDDEFINE» |
| |
| «DEFINE Builder FOR SProjection-»«ENDDEFINE» |
| «DEFINE Builder FOR SNDimensional-»«ENDDEFINE» |
| «DEFINE Builder FOR SGrid-»«ENDDEFINE» |
| «DEFINE Builder FOR SContinuousSpace-»«ENDDEFINE» |
| «DEFINE Builder FOR SNetwork-»«ENDDEFINE» |
| «DEFINE Builder FOR SGeography-»«ENDDEFINE» |
| |
| «DEFINE SerialBlock (List[AAct] exp, List[AAct] path, Boolean inner, Boolean genNegate) FOR AAct-» |
| «EXPAND BeginBlock(path, inner) FOREACH exp-» |
| «EXPAND InnerBlock(path, inner) FOREACH exp-» |
| «EXPAND Block(path, inner, genNegate) FOREACH exp-» |
| «EXPAND EndBlock(path, inner) FOREACH exp-»«ENDDEFINE» |
| |
| «DEFINE SerialBlock (List[AAct] path, Boolean inner, Boolean genNegate) FOR AAct-» |
| «EXPAND SerialBlock (expansionSerial(path), path, inner, true)-»«ENDDEFINE» |
| |
| «DEFINE Block(List[AAct] path, Boolean inner, Boolean genNegate) FOR AAct-» |
| «LET (List[AAct]) path.toList().add(this) AS newPath-» |
| «EXPAND BeginSerialBlock (newPath, inner)-» |
| «EXPAND SerialBlock (newPath, inner, true)-» |
| «EXPAND EndSerialBlock (newPath, inner)-» |
| «IF genNegate-» |
| «EXPAND SerialBlock(expansionNegate(newPath), newPath, inner, false)-» |
| «ENDIF-» |
| «ENDLET-»«ENDDEFINE» |
| |
| «DEFINE BeginBlock(List[AAct] path, Boolean inner) FOR AAct-» |
| «IF expandSpatialBlock()-» |
| «EXPAND ConditionBlock(path, inner)-»«IF queryFor()-»«EXPAND BeginQueryBlock(path, inner)-»«ENDIF-» |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE BeginSerialBlock(List[AAct] path, Boolean inner) FOR AAct-»«ENDDEFINE» |
| «DEFINE BeginSerialBlock(List[AAct] path, Boolean inner) FOR AControl-» |
| «IF expressIf(path, inner)-»if («expression(path, inner)») {«ENDIF-» |
| «ENDDEFINE» |
| «DEFINE BeginBlock(List[AAct] path, Boolean inner) FOR ACreateAgents-» |
| for (int «id()»Count = 0; «id()»Count < «agentCount.expression(path, inner)»; «id()»Count++) { |
| «ENDDEFINE» |
| |
| «DEFINE EndBlock(List[AAct] path, Boolean inner) FOR AAct-» |
| «IF expandSpatialBlock()-» |
| «IF queryFor()-»«EXPAND EndQueryBlock(path, inner)-»«ENDIF-» |
| «ENDIF-»«ENDDEFINE» |
| «DEFINE EndSerialBlock(List[AAct] path, Boolean inner) FOR AAct-»«ENDDEFINE» |
| «DEFINE EndSerialBlock(List[AAct] path, Boolean inner) FOR AControl-» |
| «IF expressIf(path, inner)-»}«ENDIF-» |
| «ENDDEFINE» |
| «DEFINE EndBlock(List[AAct] path, Boolean inner) FOR ACreateAgents-» |
| } |
| «ENDDEFINE» |
| |
| «DEFINE InnerEvaluation (List[AAct] path, Boolean inner) FOR AAct-» |
| «EXPAND Evaluation({selected}, false) FOREACH allSources.select(a | a.selected == selected)-»«ENDDEFINE» |
| |
| «DEFINE ConditionBlock (List[AAct] path, Boolean inner) FOR AAct-» |
| «IF conditionFor()-» |
| /* |
| Evaluation: |
| «EXPAND metaabm::tmpl::Java::InnerEvaluation(path, false)-» |
| Expression: |
| «expression(path, false)» |
| */ |
| «ENDIF-»«ENDDEFINE» |
| «DEFINE BeginQueryBlock (List[AAct] path, Boolean inner) FOR AAct-» |
| /* |
| Spatial Functions: |
| «controlCompound().spatial().functions().ids()» |
| */ |
| «selector().typeName()» «selector().id()» = new «selector().typeName()»(); |
| «ENDDEFINE» |
| «DEFINE EndQueryBlock (List[AAct] path, Boolean inner) FOR AAct-»«ENDDEFINE» |
| |
| «DEFINE Evaluation (List[AAct] path, Boolean inner) FOR AAct-»«ENDDEFINE» |
| «DEFINE Evaluation (List[AAct] path, Boolean inner) FOR AEvaluate-» |
| «IF rootSelected.metaType != ADerive || !targets.isEmpty-» |
| «EXPAND ExtendType-» «varName()» = «EXPAND FunctionInnerBlock(path, inner)-»; |
| «ELSE-» |
| return «EXPAND FunctionInnerBlock(path, inner)-»; |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE MultiBlock (List[SState] states, List[SStateValue] currentOptions) FOR AInput-» |
| «IF sink.function.id().toLowerCase().contains("cross")-» |
| «IF !states.isEmpty-» |
| if («FOREACH states.first().options AS option SEPARATOR "} else if ("-»«states.first().getterName()»() == «option.typeName()-») { |
| «EXPAND MultiBlock ((List[SState]) states.withoutFirst(), (List[SStateValue]) currentOptions.toList().add(option))-» |
| «ENDFOREACH-»} |
| «ELSE-» |
| «value.id()» = «paramBase()»«currentOptions.collect(e | e.label.replaceAll(" ","")).toString("")»(); |
| «ENDIF-» |
| «ELSE» |
| «value.id()» = «paramBase()»Base(); |
| «FOREACH states AS state-» |
| switch («state.getterName()»()) { |
| «FOREACH state.options AS option-» |
| case «option.id()» : |
| «value.id()» = «value.id()» + «paramLocation().pre()»«sink.getterName()»«option.label.replaceAll(" ","")»«sink.function.inputPrototypes.get(sink.inputs.indexOf(this)).id().toFirstUpper()»();break; |
| «ENDFOREACH-» |
| } |
| «ENDFOREACH-» |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AAct-» |
| //*** No Act Defined: «id()» |
| «ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ASet-» |
| «selected.selid().pre() + setterPath(attribute)»(«parameter.bind(path, inner)»);«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AEvaluate-» |
| «IF selected == rootSelected || allTargets.typeSelect(ASet).collect(e | e.parameter).size > 0-» |
| «IF function.multiValue-» |
| double «id()» = «selected.selid().pre() + id()»(); |
| «ELSEIF !function.id().startsWith("graphic")-» |
| «EXPAND Evaluation(path, inner)-» |
| «ENDIF-»«ENDIF-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AMethod-» |
| «IF SAgent.isInstance(eContainer) && !(testing() && (id().startsWith("test") || id().startsWith("assert")))-» |
| «methodName()»(); |
| «ELSE-» |
| «body» |
| «ENDIF-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ACause-» |
| «selected.selid().pre() + result.methodName()»(); |
| «ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ADie-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AMove-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ALeave-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AControl-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ACommand-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ASelect-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ACreateAgents-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ALoadAgents-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AConnect-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR ADisconnect-»«ENDDEFINE» |
| «DEFINE InnerBlock (List[AAct] path, Boolean inner) FOR AReplace-»«ENDDEFINE» |
| |
| «DEFINE FunctionInnerBlock (List[AAct] path, Boolean inner) FOR ASink-» |
| «IF function.id() == "item"-» |
| «inputs.get(0).expression(path, inner)»[«inputs.get(1).expression(path, inner)»] |
| «ELSEIF function.id() == "length"-» |
| «inputs.get(0).expression(path, inner)».length |
| «ELSEIF function.id() == "randomState"-» |
| «inputs.get(0).value.typeName()».values()[randomToLimit(«inputs.get(0).value.typeName()».values().length)] |
| «ELSEIF function.id() == "randomMember"-» |
| «inputs.get(0).expression(path, inner)»[randomToLimit(«inputs.get(0).expression(path, inner)».length)] |
| «ELSEIF function.id() == "randomIs"-» |
| true |
| «ELSEIF function.id() == "colorRGB"-» |
| new java.awt.Color((float) «inputs.expression(path, inner).toString(", (float) ")») |
| «ELSEIF function.id().startsWith("color")-» |
| java.awt.Color.«function.id().replaceFirst("color","").toUpperCase()» |
| «ELSEIF function.libid() == "math"-» |
| java.lang.Math.«function.id()»(«inputs.expression(path, inner).toString(", ")») |
| «ELSE-»«bind(path, inner)»«ENDIF-»«ENDDEFINE» |
| |
| «DEFINE Debug(List[AAct] path, Boolean inner) FOR AAct-» |
| //id, selfrom, dest, inner?: «id()», «selfrom().id()», «dest().id()», «inner» |
| //path: «path.ids()» |
| //sources: «sources.ids()» |
| //targets: «targets.ids()» |
| «ENDDEFINE» |
| |
| «DEFINE ActionBody FOR FFunction-» |
| «IF id() == "randomWeighted"-» |
| double scalarDraw = getRandom().nextDouble(); |
| double currentPortion = 0.0; |
| for (int i = 0; currentPortion <= 1.0 && i < weights.length; i++) { |
| currentPortion += weights[i]; |
| if (scalarDraw < currentPortion) { |
| return i; |
| } |
| } |
| System.out.println("WARNING: Weights do not add to 1.0: " + currentPortion + ". Using final index value."); |
| return weights.length - 1; |
| «ENDIF-» |
| «ENDDEFINE» |
| |
| «DEFINE GenerateComment FOR Object» |
| /** |
| * <!-- begin-user-doc --> |
| * |
| * <!-- end-user-doc --> |
| * @generated |
| */«ENDDEFINE» |