blob: 1e1cdfe9f610865847afeefa18890bd40ffbcdb8 [file] [log] [blame]
«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 IIDundefined«ENDDEFINE»
«DEFINE ClassKeyword FOR SImplementedclass«ENDDEFINE»
«DEFINE ClassKeyword FOR SAttributeenum«ENDDEFINE»
«DEFINE ClassName FOR IID-»«typeName()»«ENDDEFINE»
«DEFINE Modifier FOR EObject-»«ENDDEFINE»
«DEFINE Modifier FOR SContext-»«ENDDEFINE»
«DEFINE ExtendType FOR EObjectObject«ENDDEFINE»
«DEFINE ExtendType FOR SProjectionObject«ENDDEFINE»
«DEFINE ExtendType FOR SGridObject«ENDDEFINE»
«DEFINE ExtendType FOR SContinuousSpaceObject«ENDDEFINE»
«DEFINE ExtendType FOR SNetworkObject«ENDDEFINE»
«DEFINE ExtendType FOR SGeographyObject«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 randomInRangeinputs.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()[randomToLimitinputs.get(0).value.typeName()».values().length)]
«ELSEIF function.id() == "randomMember"
«inputs.get(0).expression(path, inner)»[randomToLimitinputs.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.Colorfunction.id().replaceFirst("color","").toUpperCase()»
«ELSEIF function.libid() == "math"
java.lang.Mathfunction.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»