class TP_CLASS < $TP
****
Representation of reference, immutable, abstract, and external types.


Flattened version is here

Ancestors
$TP $HASH $IS_EQ $STR
$IS_LT{_} $CALL_TP TP



Public


Readable Attributes
attr is_atomic:BOOL;
attr is_builtin:BOOL;
attr name:IDENT;
**** The name of the type. parameters in order, void if none.
attr params:ARRAY{$TP};
**** Specifiers for the type parameters in order, void if none.

Writable Attributes
attr name:IDENT;
**** The name of the type. parameters in order, void if none.
attr params:ARRAY{$TP};
**** Specifiers for the type parameters in order, void if none.

Features
as:AS_TYPE_SPEC
create(name:IDENT, params:ARRAY{$TP}, prog:PROG):SAME
**** A class type object with the specified attributes.
ifc: IFC
impl: IMPL
**** Creates the implementation of this class. Does nothing if already computed. Test for cyclic implementation contruction with include clauses.
is_abstract:BOOL
**** True if self is abstract.
is_bound:BOOL
**** Returns false.
is_reference_free:BOOL
**** mbk
is_subtype(t:$CALL_TP):BOOL
**** True if self is a subtype of `t'.
kind:INT
**** One of TP_KIND::missing_tp, TP_KIND::val_tp, TP_KIND::ref_tp, TP_KIND::abs_tp, TP_KIND::ext_c_tp, TP_KIND::ext_fortran_tp, pSather: AS_KIND::spr_tp TP_KIND::rout_tp, TP_KIND::iter_tp.
str:STR
**** The string version of the type represented by self. Uses no whitespace, eg: "FOO{A,B{C},D}".
tp_context_for:TP_CONTEXT
**** The type context appropriate for the body of `self'. Void if `self' is not a known type.


Private

attr is_atomic:BOOL;
attr is_builtin:BOOL;
attr kind_cache:INT;
**** Cache for the kind of class this is
attr kind_cache:INT;
**** Cache for the kind of class this is
attr my_impl: IMPL;
**** The implementation of this type.
attr my_impl: IMPL;
**** The implementation of this type.
pnames:ARRAY{IDENT}
**** An array of the parameter names for the type `self'. Void if none.
attr sas_cache:STR;
**** Cache for string representation.
attr sas_cache:STR;
**** Cache for string representation.