class IMPL_INCLUDE
****
Information for handling an `include' clause.


Flattened version is here



Public


Readable Attributes
attr as:AS_INCLUDE_CLAUSE;
**** The include clause. but with SAME referring to 'tp'.
attr con:TP_CONTEXT;
**** The context, in which impl is to be created. but with SAME referring to 'tp'.
attr elt_tbl:ELT_TBL;
**** The translated included elements.
attr impl:IMPL;
**** The implementation of the included class but with SAME referring to 'tp'.
attr itp: TP_CLASS;
**** The included class. but with SAME referring to 'tp'.
attr tp:TP_CLASS;
**** The type with the include clause. but with SAME referring to 'tp'.
attr used_mods:FSET{AS_FEAT_MOD};
**** The modifiers which were used.

Writable Attributes
attr as:AS_INCLUDE_CLAUSE;
**** The include clause. but with SAME referring to 'tp'.
attr con:TP_CONTEXT;
**** The context, in which impl is to be created. but with SAME referring to 'tp'.
attr elt_tbl:ELT_TBL;
**** The translated included elements.
attr impl:IMPL;
**** The implementation of the included class but with SAME referring to 'tp'.
attr itp: TP_CLASS;
**** The included class. but with SAME referring to 'tp'.
attr tp:TP_CLASS;
**** The type with the include clause. but with SAME referring to 'tp'.
attr used_mods:FSET{AS_FEAT_MOD};
**** The modifiers which were used.

Features
create(
****
include_bound_err(t:$AS_CLASS_ELT)
**** Print an error message about including bound types.
include_conflict_err(en,f:ELT)
include_ext_err(t:$AS_CLASS_ELT)
include__err(t:$AS_CLASS_ELT)
**** Print an error message if a reader or writer (or both) are missing for readonly features.
included_elt_tbl:ELT_TBL
**** The table of elements as transformeded by the new value of SAME and any feature modification clauses.
included_impl:IMPL
**** Compute the implementation `impl' of the included type. Set the location for reporting an error in case a loop is found.
included_tp:TP_CLASS
**** Compute the type which is included by the clause `as' in the type `tp'. Print an error and return void if the included type is external, bound, or a type parameter.
modifier_for_name(i:IDENT):AS_FEAT_MOD
**** Return the feature modifier in `as' for the name `i', or void, if there isn't one for that name.
modify_elt(e:ELT):ELT
**** Make a new element from `e' by changing its name by the modifiers in `as', by changing SAME to have the value `tp', and by modifying `is_private' according to the include clause and feature modifier. Make `srctp' be the old `srctp'. Return void if an error or if the element is made to be undefined.
param_include_err(t:$AS_CLASS_ELT)
prog:PROG
**** The program object for this interface.
test_array_err:BOOL
**** Print an error message and return true if `tp' is a value type and `itp' includes AREF or if `tp' is a reference type and `itp' includes AVAL.
test_duplicate_feat_mod_err:BOOL
**** If two feature modifiers have the same name then print an error and return true, otherwise return false.
unused_mod_err(t:AS_FEAT_MOD)