simplified algorithm
authorbdemsky <bdemsky>
Tue, 24 Apr 2007 23:54:53 +0000 (23:54 +0000)
committerbdemsky <bdemsky>
Tue, 24 Apr 2007 23:54:53 +0000 (23:54 +0000)
Robust/src/Analysis/TaskStateAnalysis/TaskAnalysisAlgorithm

index 9bd2b6e6e277a3ea238ceecdebcfc88ded547ae6..78d9c9608494bc0f7bd57987a785eecf7eb30c9f 100644 (file)
@@ -2,31 +2,47 @@ Task Analysis:
 
 Algorithm:
 
-1.     Obtain the flags for each class in the program(Incase, a class has a super class, the super's flags, if any, are included
-    in the list of flags for the class)
-2.     Create a new flagstate for the StartupObject class with the initialstate flag set to true.  Append this flagstate to the 
-    queue, QMAIN.  
-3.     For each class that has only externs,  add all the possible runtime transitions(flagstates) to QMAIN.
-4.     Pop the head of QMAIN and use this flagstate FS to evaluate which task triggers on this.
-5.     Add all runtime transitions from FS to QMAIN and ADJLIST(as edges from FS) ensuring that the new states don't exist in QMAIN.
-6.     Iterate through the list of tasks using FS.
-7.     If a task is triggered, 
-       a.  If FS satisfies more than one parameter of the task,  throw an error stating that this is an illegal operation.
-       b.  If 7a is not true, then add FS to the ADJLIST for that particular class.  Before adding, ensure that the flagstate 
-    doesn't already exist in the ADJLIST.  Keep track of the temp (as TEMP) whose flags form the triggering flagstate.
-8.     Search through the FFANS in this task:
+1. Obtain the flags for each class in the program(Incase, a class has
+a super class, the super's flags, if any, are included in the list of
+flags for the class)
+
+2. Create a new flagstate for the StartupObject class with the
+initialstate flag set to true.  Append this flagstate to the queue,
+QMAIN.
+
+3. Pop the head of QMAIN and use this flagstate FS to evaluate which
+task triggers on this.
+
+4. Add all runtime transitions (external flag changes) from FS to
+QMAIN and ADJLIST(as edges from FS) ensuring that the new states don't
+exist in QMAIN.
+
+5. Iterate through the list of tasks using FS.
+
+6.     If a task is triggered, 
+
+       a.  If FS satisfies more than one parameter of the task, throw
+an error stating that this is an illegal operation.
+
+       b.  If 6a is not true, then add a transition for this task to
+FS using step 7.  Before performing step 7, make sure that the task
+doesn't already exist as a transition to FS. Keep track of the temp
+(as TEMP) whose flags form the triggering flagstate.
+
+7.     Search through the FFANS in this task:
+
        a.      For NewObject node,  
-               i.      If the new object is of a class which has only externs, create a new flagstate with all flags set to false and 
-                   push into QMAIN ensuring that it doesn't already exist in QMAIN and ADJLIST. 
-               ii.     If the new object is of a class which has both types of flags, create the new flagstate and append to QMAIN and 
-                       ADJLIST ensuring that the state doesn't already exist.
-               iii.If new object is of a class which has no externs, then create the new flagstate and append to QMAIN and ADJLIST
-                        ensuring that the state doesn't already exist.
-       b.      For the task exit node, apply the flag changes to the tempflag pairs corresponding to TEMP and create the new flagstate.  
-           Add this state alongwith the task as an Edge to FS in the ADJLIST.
-               i.      If the class has no external flags, append the new flagstate to QMAIN ensuring that it doesn't already exist.
-               ii.     If the class has both types of flags, create the possible runtime states from the base state obtained in 6b;  
-                       Also add the Runtime edges to the base state in ADJLIST.  Append the states to QMAIN ensuring that they are not there 
-                       already.
-       c.      For the PRE node, throw an error stating that this type of node isn't supported anymore in Bristlecone.
-9.     Repeat steps 4-8 until QMAIN is empty.
+
+               i. If the new object is of a class which has both
+types of flags, create the new flagstate and append to QMAIN.  Set its
+set of transitions to the empty set.
+
+       b. For the task exit node, apply the flag changes to the
+tempflag pairs corresponding to TEMP and create the new flagstate.
+Add this state along with the task as an Edge to FS in the FS
+transition set.  Add the state to QMAIN.
+
+       c. For the PRE node, throw an error stating that this type of
+node isn't supported anymore in Bristlecone.
+
+8. Repeat steps 3-7 until QMAIN is empty.