class TP_GRAPH
****
Objects which represent Sather type graphs. The tables do not explicitly represent the edges between bound objects


Flattened version is here



Public


Readable Attributes
attr anc_tbl:FMAP{TP_CLASS,FSET{TP_CLASS}};
**** Map from each class type to its ancestors
attr child_tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Map from each abstract type to any explicit children
attr cur:FSET{TUP{IDENT,INT}};
**** The set of type names and number of parameters which are in the process of determining their ancestors. Used to detect loops.
attr des_tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Table of descendants for each abstract type.
attr par_tbl:FMAP{TP_CLASS,FSET{TP_CLASS}};
**** Map from each class type to the direct supertypes
attr prog:PROG;

Writable Attributes
attr anc_tbl:FMAP{TP_CLASS,FSET{TP_CLASS}};
**** Map from each class type to its ancestors
attr child_tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Map from each abstract type to any explicit children
attr cur:FSET{TUP{IDENT,INT}};
**** The set of type names and number of parameters which are in the process of determining their ancestors. Used to detect loops.
attr des_tbl:FMAP{TP_CLASS,FSET{$TP}};
**** Table of descendants for each abstract type.
attr par_tbl:FMAP{TP_CLASS,FSET{TP_CLASS}};
**** Map from each class type to the direct supertypes
attr prog:PROG;

Features
abs_subtype_test(t:$TP, at:TP_CLASS):BOOL
**** True if the type `t' is a subtype of the abstract type `at'.
create(prog:PROG):SAME
**** A type graph for the program `prog'.
get_anc(t:TP_CLASS):FSET{TP_CLASS}
**** The set of "<" ancestors for `t'. Void if none. $OB is not explicitly included. Do not modify the returned table. Reports an error if there is a loop. All returned types should be abstract.
get_children(tp:TP_CLASS):FSET{$TP}
get_des(t:TP_CLASS):FSET{$TP}
**** The set of ">" descendants for `t'. Void if none. Do not modify the returned table. Reports an error if there is a loop.
get_parents(tp:TP_CLASS):FSET{TP_CLASS}
make_family_members
**** compute parents and children information for all classes using both subtyping ``>'' and supertyping ``<''
tup_str(t:TUP{IDENT,INT}):STR
**** A string for the specified type of the form "FOO{_,_,_}".