fix optional arguments...lots of changes
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / SafetyAnalysis.java
index ffb118ff8eb51bba6e2cfaa0f308d629483dc8e4..f1cbdb210583c51b0272f6ea3a47e1ae0b4f57bc 100644 (file)
@@ -15,10 +15,10 @@ public class SafetyAnalysis {
     private State state;
     private TaskAnalysis taskanalysis;
     private Hashtable<ClassDescriptor, Hashtable<OptionalTaskDescriptor, OptionalTaskDescriptor>> optionaltaskdescriptors;
+    private Hashtable<FlagState, Hashtable<TaskIndex, Set<OptionalTaskDescriptor>>> fstotimap;
 
     private ClassDescriptor processedclass;
    
-    
     public Hashtable<ClassDescriptor, Hashtable<FlagState, Set<OptionalTaskDescriptor>>> getResult() {
        return safeexecution;
     }
@@ -39,6 +39,7 @@ public class SafetyAnalysis {
        this.state = state;
        this.taskanalysis = taskanalysis;
         this.optionaltaskdescriptors = new Hashtable();
+       this.fstotimap=new Hashtable<FlagState, Hashtable<TaskIndex, Set<OptionalTaskDescriptor>>>();
     }
     
     /* Builds map of fs -> EGTasknodes that can fire on fs for class cd */
@@ -56,6 +57,16 @@ public class SafetyAnalysis {
        return table;
     }
 
+
+    public Set<OptionalTaskDescriptor> getOptions(FlagState fs, TaskDescriptor td, int index) {
+       return fstotimap.get(fs).get(new TaskIndex(td, index));
+    }
+
+    public Set<TaskIndex> getTaskIndex(FlagState fs) {
+       return fstotimap.get(fs).keySet();
+    }
+
+
     /* Builds map of fs -> set of fs that depend on this fs */
 
     private Hashtable<FlagState, Set<FlagState>> buildUseMap(ClassDescriptor cd) {
@@ -182,6 +193,7 @@ public class SafetyAnalysis {
                tovisit.addAll(fsusemap.get(fs));
            }
        }
+       fstotimap.put(fs, timap);
     }
 
     private HashSet createIntersection(Set A, Set B, ClassDescriptor cd){