abstract class $TP < $CALL_TP, $IS_LT{$TP}, $STR, $HASH
****
Abstract interface to classes representing Sather types. Descendants are TP_CLASS, TP_ROUT, and TP_ITER.


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

Descendants
TP_CLASS TP_ITER TP_ROUT



Public


Features
as:AS_TYPE_SPEC;
**** construct AS_TYPE_SPEC for self;
hash:INT;
**** Hash function
ifc: IFC;
**** Returns the interface of the type. If neccessary the interface will be computed.
impl: IMPL;
**** Returns the implementation of the type. Produces error, if the type cannot have any implementation.
is_abstract:BOOL;
**** True if self is abstract.
is_atomic:BOOL;
**** True if an assignment to self is atomic used only for pSather
is_bound:BOOL;
**** True if self is a bound type.
is_builtin:BOOL;
**** True if self is a builtin type
is_eq(t:$OB):BOOL;
**** Equality test.
is_external:BOOL;
**** True is self is one of external types
is_immutable:BOOL;
**** True is self is an immutable type.
is_lt(t:$TP):BOOL;
**** Canonical ordering.
is_neq(t:$OB):BOOL;
**** Inequality test.
is_partial:BOOL;
**** True if self is a partial class
is_reference_free:BOOL;
**** Does the implementation use pointers that may affect garbage collection?
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::part_tp, TP_KIND::ext_c_tp, TP_kind::ext_fortran_tp, pSather: TP_KIND::spr_tp, TP_KIND::rout_tp, TP_KIND::iter_tp.
prog:PROG;
**** This type's program object.
str:STR;
**** The string representation of self. Uses no whitespace, eg: "FOO{A,B{C},D}".