class IMPL
****
The implementation of a type.


Flattened version is here

Ancestors
SELECT_SIG



Public


Readable Attributes
attr arr:TP_CLASS;
**** AREF{T} or AVAL{T} if there is an
attr elts:ELT_TBL;
**** The elements of the type.
attr ifc:IFC;
**** The public interface of the type.
attr tp:$TP;
**** The type this is for.

Writable Attributes
attr arr:TP_CLASS;
**** AREF{T} or AVAL{T} if there is an
attr elts:ELT_TBL;
**** The elements of the type.
attr ifc:IFC;
**** The public interface of the type.
attr tp:$TP;
**** The type this is for.

Features
asize_val:INT
**** If `asize' is defined as an integer constant, this returns its value. Otherwise it returns -1.
create:SAME
**** An empty IMPL object.
elt_with_sig(s:SIG):ELT
**** The element in this implementation with the signature `s', if present, void if not.
has_invariant:BOOL
**** True if this implementation defines a routine: `invariant:BOOL'.
invariant_sig:SIG
**** Return the invariant signature if there is one, void if not.
is_reference_free:BOOL
**** return true if we can be allocated atomically.
prog:PROG
**** The program this belongs to.
sig_for_call(c:CALL_SIG):SIG
**** The signature in the public interface which corresponds to the call `c'. Void if none. Reports an error if the call is ambiguous or missing (assumes that "err_loc" has been set).
sig_for_internal_call(c:CALL_SIG):SIG
**** The signature in self which corresponds to the internal call signature `c'. err_call_sig if none. Reports an error if the call is ambiguous or missing (assumes that "err_loc" has been set).


Private

attr is_ref_cache:BOOL;
attr is_ref_cache:BOOL;
attr use_ref_cache:BOOL;
**** include path to one of them, or void if not.
attr use_ref_cache:BOOL;
**** include path to one of them, or void if not.