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