Objects have:
Collection of Flags
+ Flags have type/name associated with them
+ Are either present or not present
+
+Assumptions:
+Task parameters can't be modified
+
+How do we handle new object allocation?
+Idea #1: Set flags at allocation
+ Only allow flag setting at exit for parameters
+
+Non parameter variables:
+1) Type must contain flags
+2) Apply flag additions to all states
+
+Tags operations:
+create_tag operation(type)
+
+tag name=new tag(type);
+
+associate_with_tag operation(object, tag)
+
+Dispatch:
+after flag status, allow tag status...
+each tag state is of the form: Type(name)
+
+Other approach:
+Tag sets: {x, y, z, ... in R
+
+Allow additions/removals of tuples in taskexit:
+remove <x, y, z, ...> from R
+add <x, y> to R
+
+Allow addition of new tuples in object allocation
+add <new, y> to R
+------------------------------------------------------------------------------
+
+
+
+
Collection of Tags
+ Tags have type/name associated with them
+ Also have UID associated with them
+ Two basic types:
+ Ordered: Initial/Next / Preserves Sequencing
+ Non-ordered: New / Groups items together
+
----------------------------------------------------------------------
Tasks:
Have list of parameters w/ flag/tag specifications
exit(o1{role1'=false},o2{role3'=false},onew{role4=true});
}
+----------------------------------------------------------------
+----------------------------------------------------------------
+
+Initial design:
+----------------------------------------------------------------
+
+Provide runtime with:
+1) List of tasks
+ a) Task names
+ b) Parameter types
+ c) Flag settings
+
+2) List of flags for each type
+
+3) Flag transition calls