| class TP_GRAPH |
|---|
| **** | Objects which represent Sather type graphs. The tables do not explicitly represent the edges between bound objects |
| 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; |
|---|
| 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; |
|---|
| 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{_,_,_}". |