From 8873509b8f800e4c75f3c5cd2ec67fe7ae30e98f Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Tue, 13 Jan 2009 08:56:09 +0000
Subject: [PATCH] update of the UPPAAL code generator

---
 src/translator/ADParallel.java             |  3 +++
 src/translator/TURTLEModelChecker.java     |  4 +++-
 src/translator/TURTLEModeling.java         | 18 ++++++++++++------
 src/translator/touppaal/TURTLE2UPPAAL.java |  6 +++++-
 src/ui/DesignPanelTranslator.java          |  6 +++---
 src/uppaaldesc/UPPAALTemplate.java         |  6 ++++++
 6 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/src/translator/ADParallel.java b/src/translator/ADParallel.java
index 10a562343c..f7a9706a9d 100755
--- a/src/translator/ADParallel.java
+++ b/src/translator/ADParallel.java
@@ -143,6 +143,9 @@ public class ADParallel extends ADComponent implements NonBlockingADComponent, M
     }
     
     public int nbGate() {
+		if (synchroGate == null) {
+			return 0;
+		}
         return synchroGate.size();
     }
     
diff --git a/src/translator/TURTLEModelChecker.java b/src/translator/TURTLEModelChecker.java
index 7638106773..fc2b5826a5 100755
--- a/src/translator/TURTLEModelChecker.java
+++ b/src/translator/TURTLEModelChecker.java
@@ -397,8 +397,10 @@ public class TURTLEModelChecker {
 				}
 				
 				action = ((ADActionStateWithGate)ad1).getActionValue();
-				if (action.length() > 0) {
+				if ((action!= null) && (action.length() > 0)) {
 					parsing(t, ad1, "actiongate", action, errors);
+				} else {
+					System.out.println("null action on gate=" + ((ADActionStateWithGate)ad1).getGate().getName() + action);
 				}
 				
 			} else if (ad1 instanceof ADActionStateWithParam) {
diff --git a/src/translator/TURTLEModeling.java b/src/translator/TURTLEModeling.java
index 87e5e3f6c3..5d4c40d8b1 100755
--- a/src/translator/TURTLEModeling.java
+++ b/src/translator/TURTLEModeling.java
@@ -797,19 +797,25 @@ public class TURTLEModeling {
 				}
 				if (index2 == -1) {
 					index2 = index3;
+					
 				}
+				
 				index4 = Math.min(index1, index2);
 				index4 = Math.min(index4, index3);
 				
 				if (index4 > 0) {
 					paramName = s.substring(index+1, index4+index+1);
 					paramName = paramName.trim();
-					if (paramName.indexOf(':') == -1) {
-						p = t.getParamByName(paramName);
-						if (p != null) {
-							paramName = paramName + ":" + p.getType();
-						} else {
-							return null;
+					try {
+						int x = Integer.decode(paramName).intValue();
+					} catch (Exception e) {
+						if (paramName.indexOf(':') == -1) {
+							p = t.getParamByName(paramName);
+							if (p != null) {
+								paramName = paramName + ":" + p.getType();
+							} else {
+								return null;
+							}
 						}
 					}
 					ret = ret + c + paramName;
diff --git a/src/translator/touppaal/TURTLE2UPPAAL.java b/src/translator/touppaal/TURTLE2UPPAAL.java
index 4387468a7b..b3c259043e 100755
--- a/src/translator/touppaal/TURTLE2UPPAAL.java
+++ b/src/translator/touppaal/TURTLE2UPPAAL.java
@@ -530,7 +530,7 @@ public class TURTLE2UPPAAL {
 			template.addDeclaration(p.getName() + " = " + p.getValue() + ";\n");
 		}
 		
-		//template.addDeclaration("int waitgroupid__;\n");
+		template.addDeclaration("int waitgroupid__;\n");
 		template.addDeclaration("clock h__;\n");
 		
 		for(Gate g:gatesWithInternalSynchro) {
@@ -2252,6 +2252,7 @@ public class TURTLE2UPPAAL {
 		while(iterator.hasNext()) {
 			template = (UPPAALTemplate)(iterator.next());
 			t = tm.getTClassWithName(template.getName());
+			System.out.println("temp=" + template.getName());
 			if (t != null) {
 				if (templatesWithMultipleProcesses.contains(template)) {
 					table.setIds(template, id, id+nb-1);
@@ -2270,6 +2271,7 @@ public class TURTLE2UPPAAL {
 						table.setIds(template, id, id);
 						id += nb;
 					} else {
+						//System.out.println("temp=" + template.getName());
 						dec += template.getName() + "__" + id + " = " + template.getName() + "();\n";
 						system += template.getName() + "__" + id;
 						table.setIds(template, id, id);
@@ -2277,6 +2279,8 @@ public class TURTLE2UPPAAL {
 					}
 				}
 			} else {
+				System.out.println("temp=" + template.getName());
+				template.removeParameter();
 				dec += template.getName() + "__" + id + " = " + template.getName() + "();\n";
 				system += template.getName() + "__" + id;
 			}
diff --git a/src/ui/DesignPanelTranslator.java b/src/ui/DesignPanelTranslator.java
index 00e17cafb1..166817e863 100755
--- a/src/ui/DesignPanelTranslator.java
+++ b/src/ui/DesignPanelTranslator.java
@@ -359,11 +359,11 @@ public class DesignPanelTranslator {
 				g = t.getGateFromActionState(s);
 				p = t.getParamFromActionState(s);
 				if ((g != null) && (nbActions == 1)){
-					//System.out.println("Action state with gate found " + g.getName() + " value:" + t.getActionValueFromActionState(s));
+					System.out.println("Action state with gate found " + g.getName() + " value:" + t.getActionValueFromActionState(s));
 					adag = new ADActionStateWithGate(g);
 					ad.addElement(adag);
 					s1 = t.getActionValueFromActionState(s);
-					//System.out.println("s1=" + s1);
+					System.out.println("s1=" + s1);
 					/*if (s1 == null) {
                         System.out.println("oh ho !");
                     }*/
@@ -380,7 +380,7 @@ public class DesignPanelTranslator {
 						return;
 					}
 					s1 = TURTLEModeling.addTypeToDataReceiving(t, s1);
-					//System.out.println("Adding type done s1=" + s1);
+					System.out.println("Adding type done s1=" + s1);
 					adag.setActionValue(s1);
 					listE.addCor(adag, tgc);
 				} else if ((p != null) && (nbActions == 1)){
diff --git a/src/uppaaldesc/UPPAALTemplate.java b/src/uppaaldesc/UPPAALTemplate.java
index 6b38b5f93e..a7bef78701 100755
--- a/src/uppaaldesc/UPPAALTemplate.java
+++ b/src/uppaaldesc/UPPAALTemplate.java
@@ -96,6 +96,12 @@ public class UPPAALTemplate {
 		parameter += _dec;
     }
 	
+	public void removeParameter() {
+		parameter = "";
+    }
+	
+	
+	
     public void setInitLocation(UPPAALLocation _loc) {
 		initLocation = _loc;
     }
-- 
GitLab