OutRulesConditionSwitch.xtend 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package be.uantwerpen.ansymo.semanticadaptation.cg.cpp.generation;
  2. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.GlobalInOutVariable
  3. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.MappedScalarVariable
  4. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.ReturnInformation
  5. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.SAScalarVariable
  6. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Port
  7. import java.util.LinkedHashMap
  8. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.OutRulesBlock
  9. public class OutRulesConditionSwitch extends RulesConditionSwitch {
  10. new(String adaptationClassName, String adaptationName,
  11. LinkedHashMap<String, LinkedHashMap<String, MappedScalarVariable>> mSVars,
  12. LinkedHashMap<String, SAScalarVariable> SASVs, LinkedHashMap<String, GlobalInOutVariable> params,
  13. LinkedHashMap<String, GlobalInOutVariable> inVars, LinkedHashMap<String, GlobalInOutVariable> outVars,
  14. LinkedHashMap<String, GlobalInOutVariable> crtlVars) {
  15. super(adaptationClassName, adaptationName, "out_rule_", mSVars, SASVs, params, inVars, outVars, crtlVars);
  16. }
  17. public def LinkedHashMap<String, GlobalInOutVariable> getGlobalVars(OutRulesBlock object) {
  18. if (object.globalOutVars !== null) {
  19. this.globalDeclaration = true;
  20. for (gVar : object.globalOutVars)
  21. doSwitch(gVar);
  22. this.globalDeclaration = false;
  23. }
  24. return this.gVars;
  25. }
  26. override ReturnInformation caseOutRulesBlock(OutRulesBlock object) {
  27. return this.doSwitch(object.globalOutVars, object);
  28. }
  29. override ReturnInformation casePort(Port object) {
  30. var retVal = new ReturnInformation();
  31. val type = mSVars.get(this.externalVariableOwner).get(object.name).mappedSv.type;
  32. val define = mSVars.get(this.externalVariableOwner).get(object.name).define;
  33. retVal.code = '''getValue«Conversions.fmiTypeToCppTypeCapitalized(type)»(«this.externalVariableOwner»,«define»)''';
  34. return retVal;
  35. }
  36. }