From e5f76bb75eca27dfdef02fbed68b43eb36a75a48 Mon Sep 17 00:00:00 2001 From: Daniel Knorreck <daniel.knorreck@telecom-paristech.fr> Date: Wed, 15 Dec 2010 16:57:31 +0000 Subject: [PATCH] --- src/avatartranslator/tocppsim/AVATAR2CPPSIM.java | 1 + src/avatartranslator/tocppsim/AvatarBlockCppSim.java | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/avatartranslator/tocppsim/AVATAR2CPPSIM.java b/src/avatartranslator/tocppsim/AVATAR2CPPSIM.java index 8cc1bfeb14..872010023a 100644 --- a/src/avatartranslator/tocppsim/AVATAR2CPPSIM.java +++ b/src/avatartranslator/tocppsim/AVATAR2CPPSIM.java @@ -130,6 +130,7 @@ public class AVATAR2CPPSIM{ declaration = "class ThisDesign: public Simulator{\npublic:\nThisDesign():Simulator(){\n"; // Declaration of events String channelType="", size=""; + declaration += "EventQueueCallback::setSimulator(this);\n"; declaration += "//Declaration of signals" + CR; for(AvatarRelation relation: avspec.getRelations()) { if(relation.isAsynchronous()){ diff --git a/src/avatartranslator/tocppsim/AvatarBlockCppSim.java b/src/avatartranslator/tocppsim/AvatarBlockCppSim.java index ac02d7c453..7e4367bbe8 100644 --- a/src/avatartranslator/tocppsim/AvatarBlockCppSim.java +++ b/src/avatartranslator/tocppsim/AvatarBlockCppSim.java @@ -145,7 +145,7 @@ public class AvatarBlockCppSim { cppcode += "_varLookUpName[\"rnd__0\"]=&rnd__0" + SCCR + CR; cppcode+=CR + "//command chaining"+ CR; cppcode+= chaining + "_currCommand=" + firstCommand + SCCR + "_firstCommand=" + firstCommand +SCCR + CR; - cppcode+= "_currCommand->prepare(true)"+SCCR; + cppcode+= "_firstCommand->prepare(true)"+SCCR; cppcode+="}"+ CR2 + functions; // + makeDestructor(); hcode = Conversion.indentString(hcode, 4); cppcode = Conversion.indentString(cppcode, 4); @@ -237,7 +237,7 @@ public class AvatarBlockCppSim { hcode+="AvActionCmd " + cmdName + SCCR; initCommand+= "," + cmdName + "("+ currElem.getID() + ", this, (ActionFuncPointer)&" + reference + "::" + cmdName + "_func, \"" + action + "\")"+CR; nextCommand= cmdName + ".setOutgoingTrans(array(1,(AvTransition*)" + makeCommands(currElem.getNext(0)) + "));\n"; - functions+="void "+ reference + "::" + cmdName + "_func(){\n" + action + "\n}" + CR2; + functions+="void "+ reference + "::" + cmdName + "_func(){\n#ifdef COMMENTS\nstd::cout << \"execute action: " + action + "\\n\";\n#endif\n" + action + "\n}" + CR2; functionSig+="void " + cmdName + "_func()" + SCCR; } else if (currElem instanceof AvatarActionOnSignal){ @@ -301,7 +301,7 @@ public class AvatarBlockCppSim { } if(trans.isGuarded()){ condFunc="(CondFuncPointer)&" + reference + "::" + cmdName + "_cfunc"; - functions+="unsigned int "+ reference + "::" + cmdName + "_cfunc(){\nreturn (" + Conversion.replaceAllChar(Conversion.replaceAllChar(trans.getGuard(), '[', "("),']',")") + ")? 1:0;\n"; + functions+="unsigned int "+ reference + "::" + cmdName + "_cfunc(){\n#ifdef COMMENTS\nstd::cout << \"check condition: " + trans.getGuard() + "\\n\";\n#endif\nreturn (" + Conversion.replaceAllChar(Conversion.replaceAllChar(trans.getGuard(), '[', "("),']',")") + ")? 1:0;\n"; functions+= "}" + CR2; functionSig+="unsigned int " + cmdName + "_cfunc()" + SCCR; }else{ @@ -391,10 +391,12 @@ public class AvatarBlockCppSim { while (matcher.find()){ String token = iAction.substring(matcher.start(), matcher.end()); System.out.print(token + ", "); - if (!isAttribute(token)) return "//" + iAction; + //if (!isAttribute(token)) return "//" + iAction; + if (!isAttribute(token)) return "#ifdef COMMENTS\nstd::cout << \"execute action: " + iAction + "\\n\";\n#endif\n"; + } System.out.println(); - return iAction; + return iAction + "\n#ifdef COMMENTS\nstd::cout << \"execute action: " + iAction + "\\n\";\n#endif\n"; } private boolean isAttribute(String iAttr){ -- GitLab