hash table
HTIndex: TYPE~HashTypes.HTIndex;
htNull: HTIndex~HashTypes.htNull;
semantic table
STRecord:
TYPE~
RECORD [
filename, assigned: BOOL,
hti: HTIndex,
imported, exported: BOOL,
link: STIndex,
impi: BcdDefs.IMPIndex,
impgfi: CARDINAL,
body:
SELECT type: *
FROM
unknown => [],
local => [
map: STMap,
info: Table.Index, -- Tree.Index,
context: CXIndex],
external => [
map: STMap,
pointer:
SELECT ptype: *
FROM
instance => [sti: STIndex],
file => [fti: BcdDefs.FTIndex],
ENDCASE]
ENDCASE];
STIndex: TYPE~Base RELATIVE POINTER[0..Limit) TO STRecord;
stNull: STIndex~STIndex.LAST;
to share proto- modules
ISEIndex, SEIndex: TYPE~STIndex;
STMap:
TYPE~
RECORD [
SELECT type: *
FROM
unknown => [],
config => [cti: BcdDefs.CTIndex],
module => [mti: BcdDefs.MTIndex],
interface => [expi: BcdDefs.EXPIndex]
ENDCASE];
Context Table
CXRecord: TYPE~RECORD [link: STIndex];
CXIndex: TYPE~Base RELATIVE POINTER[0..Limit) TO CXRecord;
cxNull: CXIndex~CXIndex.LAST;