From f18b95e007448a40a5e3e6dc17f4868348b36a52 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Tue, 3 Apr 2018 17:12:10 +0200
Subject: [PATCH] Update on TMLMapping

---
 src/main/java/automata/State.java           |  1 +
 src/main/java/tmltranslator/HwLink.java     |  2 --
 src/main/java/tmltranslator/TMLMapping.java | 34 +++++++++++++++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/main/java/automata/State.java b/src/main/java/automata/State.java
index 5e72f9b54f..56d6b19a5a 100755
--- a/src/main/java/automata/State.java
+++ b/src/main/java/automata/State.java
@@ -54,6 +54,7 @@ import java.util.ListIterator;
 public class State {
     private String name;
     private LinkedList<Transition> transitions;
+    public Object referenceObject;
     
     public State(String _name) {
          transitions = new LinkedList<Transition>();
diff --git a/src/main/java/tmltranslator/HwLink.java b/src/main/java/tmltranslator/HwLink.java
index 3664381f64..ca2c23259c 100755
--- a/src/main/java/tmltranslator/HwLink.java
+++ b/src/main/java/tmltranslator/HwLink.java
@@ -84,6 +84,4 @@ public class HwLink implements Comparable<HwLink> {
 	return s;
     }
 
-    
-
 }
diff --git a/src/main/java/tmltranslator/TMLMapping.java b/src/main/java/tmltranslator/TMLMapping.java
index 52bd2927ff..1476572ee5 100755
--- a/src/main/java/tmltranslator/TMLMapping.java
+++ b/src/main/java/tmltranslator/TMLMapping.java
@@ -48,6 +48,7 @@ import tmltranslator.toproverif.TML2ProVerif;
 import ui.TMLArchiPanel;
 import ui.TMLComponentDesignPanel;
 import ui.CorrespondanceTGElement;
+import automata.*;
 
 import java.util.*;
 
@@ -88,6 +89,12 @@ public class TMLMapping<E> {
     private int hashCode;
     private boolean hashCodeComputed = false;
 
+    // Automata to verify the mapping of channels
+    // and make minimal hardware
+    private Automata aut;
+    private HashMap<HwNode, State> nodesToStates;
+
+
 
 
     // REFERENCES TO BE REMOVED!!!! :(
@@ -1615,4 +1622,31 @@ public class TMLMapping<E> {
         //s = myutil.Conversion.transformToXMLString(s);
         return s;
     }
+
+
+    public void makeAutomata() {
+        aut = new Automata();
+        nodesToStates = new HashMap<HwNode, State>();
+
+        // Make a state for each hardware node
+        for(HwNode node: tmla.getHwNodes()) {
+            State st = new State(node.getName());
+            st.referenceObject = node;
+            nodesToStates.put(node, st);
+        }
+
+        // Making links
+        for(HwLink link: tmla.getHwLinks()) {
+            HwNode node1 = link.bus;
+            HwNode node2 = link.hwnode;
+
+            State st1 = nodesToStates.get(node1);
+            State st2 = nodesToStates.get(node2);
+
+            if ((st1 != null) && (st2 != null)) {
+                Transition t = new Transition(link.getName(), st2);
+                st1.addTransition(t);
+            }
+        }
+    }
 }
-- 
GitLab