From 5fd4d43fb21ce93e9dadad8c3e5e746ee01dfa54 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Wed, 26 Jan 2011 16:50:58 +0000
Subject: [PATCH] AVATAR: Bug resolved on bool / int parameters in asynchronous
 channels

---
 src/avatartranslator/touppaal/AVATAR2UPPAAL.java | 16 +++++++++-------
 src/translator/ActivityDiagram.java              |  6 ++++--
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/avatartranslator/touppaal/AVATAR2UPPAAL.java b/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
index 79baf705a1..a22d0b3d07 100755
--- a/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
+++ b/src/avatartranslator/touppaal/AVATAR2UPPAAL.java
@@ -416,22 +416,24 @@ public class AVATAR2UPPAAL {
 					templateAsynchronous.addDeclaration("int head__" + name0 + " = 0;\n");
 					templateAsynchronous.addDeclaration("int tail__" + name0 + " = 0;\n");
 					
-					int cpt = 0;
+					int cpt_int = 0;
+					int cpt_bool = 0;
 					String listName;
 					
 					for(AvatarAttribute aa: sig1.getListOfAttributes()) {
-						listName = "list__" + name0 + "_" + cpt;
+						listName = "list__" + name0 + "_" + (cpt_int+cpt_bool);
 						
 						if (aa.isInt()) {
 							templateAsynchronous.addDeclaration("int " + listName + "[" + ar.getSizeOfFIFO() + "];\n");
-							enqueue += "  " + listName +  "[tail__" + name0 + "] = " +  ACTION_INT + cpt + ";\n";
-							dequeue += "  " + ACTION_INT + cpt + " = " + listName +  "[head__" + name0 + "] " + ";\n";
+							enqueue += "  " + listName +  "[tail__" + name0 + "] = " +  ACTION_INT + cpt_int + ";\n";
+							dequeue += "  " + ACTION_INT + cpt_int + " = " + listName +  "[head__" + name0 + "] " + ";\n";
+							cpt_int ++;
 						} else {
 							templateAsynchronous.addDeclaration("bool " + listName + "[" + ar.getSizeOfFIFO() + "];\n");
-							enqueue += "  " + listName +  "[tail__" + name0 + "] = " +  ACTION_BOOL + cpt + ";\n";
-							dequeue += "  " + ACTION_BOOL + cpt + " = " + listName +  "[head__" + name0 + "] " + ";\n";
+							enqueue += "  " + listName +  "[tail__" + name0 + "] = " +  ACTION_BOOL + cpt_bool + ";\n";
+							dequeue += "  " + ACTION_BOOL + cpt_bool + " = " + listName +  "[head__" + name0 + "] " + ";\n";
+							cpt_bool ++;
 						}
-						cpt ++;
 					}
 					enqueue += "  tail__" + name0 + " = (tail__" + name0 + "+1) %" + ar.getSizeOfFIFO() + ";\n";
 					enqueue += "  size__" + name0 + "++;\n";
diff --git a/src/translator/ActivityDiagram.java b/src/translator/ActivityDiagram.java
index 6bd4542d7b..022123a9b1 100755
--- a/src/translator/ActivityDiagram.java
+++ b/src/translator/ActivityDiagram.java
@@ -760,8 +760,10 @@ public class ActivityDiagram extends Vector{
 				ADParallel adpar1 = (ADParallel)(get(i));
 				
 				g = adpar1.getSpecialGate();
-				g = t.getGateByName(g.getName());
-				adpar.setSpecialGate(g);
+				if (g != null) {
+					g = t.getGateByName(g.getName());
+					adpar.setSpecialGate(g);
+				}
 				
 				/*for(j=0; j<adch1.getNbGuard(); j++) {
 					adch.addGuard(adch1.getGuard(j));
-- 
GitLab