class TP_CONTEXT
****
A context for converting AS_TYPE_SPEC trees into $TP objects.


Flattened version is here



Public


Readable Attributes
attr is_abs:BOOL;
**** True if in an abstract class.
attr pnames:ARRAY{IDENT};
**** Type parameter names, if any.
attr prog:PROG;
**** The program this is for.
attr ptypes:ARRAY{$TP};
**** Type parameter values, if any.
attr same:TP_CLASS;
**** The type that replaces "SAME",

Writable Attributes
attr is_abs:BOOL;
**** True if in an abstract class.
attr pnames:ARRAY{IDENT};
**** Type parameter names, if any.
attr prog:PROG;
**** The program this is for.
attr ptypes:ARRAY{$TP};
**** Type parameter values, if any.
attr same:TP_CLASS;
**** The type that replaces "SAME",

Features
create(same:TP_CLASS, pnames:ARRAY{IDENT}, ptypes:ARRAY{$TP},
str: STR
**** For debugging
tp_class_of(t:AS_TYPE_SPEC,memorize:BOOL):$TP
**** The type object corresponding to the class type specifier `t' in this context.
tp_iter_of(t:AS_TYPE_SPEC):$TP
**** The type object corresponding to the bound iter type specifier `t' in this context.
tp_of(t:AS_TYPE_SPEC): $TP
tp_of(t:AS_TYPE_SPEC,memorize:BOOL):$TP
**** The type object corresponding to the type specifier `t' in this context. Void if `t' is void. If memorize is false to not write this type into the global type table.
tp_rout_of(t:AS_TYPE_SPEC):$TP
**** The type object corresponding to the bound routine type specifier `t' in this context.
type_spec_has_same(t:AS_TYPE_SPEC):BOOL
**** True if the type spec `t' contains "SAME".
type_spec_is_param(t:AS_TYPE_SPEC):BOOL
**** True if `t' is a type specifier which is just a type parameter.
type_spec_params_have_same(t:AS_TYPE_SPEC):BOOL
**** True if the type spec `t' contains "SAME".
value_of_param(s:IDENT):$TP
**** The value of the parameter named by `s'. If `s' doesn't name a parameter, returns void.