InRulesConditionSwitch.xtend 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package be.uantwerpen.ansymo.semanticadaptation.cg.cpp.generation
  2. import java.util.LinkedHashMap
  3. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.MappedScalarVariable
  4. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.SAScalarVariable
  5. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.CompositeOutputFunction
  6. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.ReturnInformation
  7. import be.uantwerpen.ansymo.semanticadaptation.semanticAdaptation.Assignment
  8. import be.uantwerpen.ansymo.semanticadaptation.cg.cpp.data.GlobalInOutVariable
  9. class InRulesConditionSwitch extends RulesConditionSwitch {
  10. private Boolean inOutputFunction = false;
  11. new(String adaptationClassName, String adaptationName, LinkedHashMap<String, LinkedHashMap<String, MappedScalarVariable>> mSVars, LinkedHashMap<String,SAScalarVariable> SASVs
  12. ,LinkedHashMap<String, GlobalInOutVariable> params
  13. ) {
  14. super(adaptationClassName, adaptationName, "in_rule_", mSVars, SASVs, params, null);
  15. }
  16. override ReturnInformation caseCompositeOutputFunction(CompositeOutputFunction object) {
  17. this.inOutputFunction = true;
  18. val ReturnInformation retVal = super.caseCompositeOutputFunction(object);
  19. this.inOutputFunction = false;
  20. return retVal;
  21. }
  22. override ReturnInformation caseAssignment(Assignment object) {
  23. var retVal = new ReturnInformation();
  24. if (inOutputFunction) {
  25. retVal.code =
  26. '''setValue(«object.lvalue.owner.name»,«mSVars.get(object.lvalue.owner.name).get(object.lvalue.ref.name).define»,«doSwitch(object.expr).code»)''';
  27. return retVal;
  28. }
  29. else
  30. {
  31. return super.caseAssignment(object);
  32. }
  33. }
  34. }