STRE Prototype SGLB Misc/Class Reference CLAS 354327 ESBR SORD 2 FIFO list (youngest is last) LITO 1 state: 0=OK, 1=starved CMNT the FIFO list goes here ESBR ESTR STRE SGLB Misc/Superclass Reference CLAS 354008 ESBR SGLB Utility/Input CMNT Expects: É ¥ inst/arglist/É CMNT The arglist is executed when it comes up PRIM Stack/Second to aux É/arglist ¥ inst/É LITO 2 É/arglist ¥ 2/inst/É PRIM S_tree/Get exact É/arglist ¥ list/2/inst/É LITO 1 É/arglist ¥ 1/list/2/inst/É PRIM List/Read É/arglist ¥ state/list/2/inst/É BRFL branch if OK LCAL loop É ¥ list/2/inst/É PRIM S_tree/Put É ¥ inst/É PRIM Heap/Store self BRTR LITO 0 É/arglist ¥ 'OK'/list/2/inst/É LITO 1 É/arglist ¥ 1/'OK'/list/2/inst/É PRIM List/Replace É/arglist ¥ list/2/inst/É LCAL Cleanup ESBR SGLB Utility/Ready CMNT Expects: É ¥ inst/É LITO 2 É ¥ 2/inst/É PRIM S_tree/Get exact É ¥ list/2/inst/É PRIM List/Test for leaf É ¥ rslt/list/2/inst/É BRFL branch if not a leaf PRIM List/Remove É ¥ list'/state/2/inst/É PRIM List/Test for leaf É ¥ rslt/list'/state/2/inst/É BRFL branch if not a leaf PRIM List/Behead É ¥ arglist/list'/state/2/inst/É PRIM Stack/Pop to aux É/arglist ¥ list'/state/2/inst/É PRIM List/Add É/arglist ¥ list/2/inst/É LCAL Cleanup BRTR PRIM List/List to item É ¥ arglist/state/2/inst/É PRIM Stack/Pop to aux É/arglist ¥ state/2/inst/É PRIM List/Item to list É/arglist ¥ list/2/inst/É LCAL Cleanup BRTR LITO 1 É ¥ 'Starved'/list/2/inst/É LITO 1 É ¥ 1/'Starved'/list/2/inst/É PRIM List/Replace É ¥ list'/2/inst/É PRIM S_tree/Put É ¥ inst/É PRIM Heap/Store self ESBR ESTR LDEF loop CMNT Grafts the arglist on the list CMNT input: É/arglist ¥ list/É CMNT Output: É ¥ new_list/É PRIM List/Test for leaf É/item ¥ rslt/list/É BRFL branch if not a leaf PRIM List/Remove É/item ¥ list/head/É LCAL loop É ¥ new_list/head/É PRIM List/Add É ¥ new_list/É BRTR PRIM List/List to item É/item ¥ leaf/É PRIM Stack/Push from aux É ¥ item/leaf/É PRIM List/Item to list É ¥ new_leaf/leaf/É PRIM List/Add É ¥ new_list/É EDEF LDEF Cleanup CMNT Stores the list away and executes the arglist CMNT Input: É/arglist ¥ list/2/inst/É CMNT Output: É ¥ É PRIM S_tree/Put É/arglist ¥ inst/É PRIM Misc/Name of node É/arglist ¥ node/inst/É PRIM Stack/Push from aux É ¥ arglist/node/inst/É PRIM Misc/Post event É ¥ inst/É PRIM Heap/Store self É ¥ É EDEF