class ABSTRACT_LAYOUT < $LAYOUT
****
A layout corresponding to a Sather abstract type. Note that the layout of the abstract iter dispatch tables depends on the iter yield value layout (if any)

For all abstract iters in it is also necessary to generate typedefs for iter dispatch table entries as they are different from the function dispatch table


Ancestors
$LAYOUT $STR TP_LAYOUT



Public


Readable Attributes
attr dependencies:FLIST{$LAYOUT};
attr prog:PROG;
attr str:STR;

Writable Attributes
attr dependencies:FLIST{$LAYOUT};
attr prog:PROG;

Readonly Shareds
shared layouts:FSET{SAME};
**** Registry of all layouts of this type

Writable Shareds
shared layouts:FSET{SAME};
**** Registry of all layouts of this type

Features
create(tp:$TP):SAME
create(tp:$TP,p:PROG):SAME
makestr:STR
sorted_fields(map:FMAP{IDENT,$TP}):LAYOUT_ARR
typedef(c:CGEN):STR


Private

make_dependencies
attr str:STR;
attr tp:$TP;
**** The type this layout is for
attr tp:$TP;
**** The type this layout is for