class TP_GRAPH_ABS_DES
****
Table of all concrete descendants of abstract types.


Flattened version is here



Public


Readable Attributes
attr gate, mutex, dollar_lock:TP_CLASS;
attr gate, mutex, dollar_lock:TP_CLASS;
attr gate, mutex, dollar_lock:TP_CLASS;
attr prog:PROG;
**** The program this table belongs to. of each abstract type.
attr tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Table of concrete descendants of each abstract type.

Writable Attributes
attr gate, mutex, dollar_lock:TP_CLASS;
attr gate, mutex, dollar_lock:TP_CLASS;
attr gate, mutex, dollar_lock:TP_CLASS;
attr prog:PROG;
**** The program this table belongs to. of each abstract type.
attr tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Table of concrete descendants of each abstract type.

Features
add(at:TP_CLASS,ct:$TP)
**** Add the concrete type `ct' as one of the descendants of the abstract type `at'.
create(prog:PROG):SAME
**** Compute an abstract descendant table for the program `prog', from the explicit ancestor and descendant tables `anc' and `des'.
des_of(tp:TP_CLASS):FSET{$TP}
**** A table of the concrete descendants of the abstract type `tp'. Void if none.
do_anc
**** Put entries in the table based on the subtype edges.
do_des
**** Put entries in the table based on the supertype edges.
do_dollar_ob
**** Put in all concrete types under $OB.
do_tbl
**** Compute the table assuming that `prog.tp_graph' and `prog.find_types' are done.