-- BcdSymbols.Mesa
-- last edited by Satterthwaite on September 14, 1982 3:00 pm
DIRECTORY
BcdDefs: TYPE USING [CTIndex, EXPIndex, FTIndex, IMPIndex, MTIndex],
Table: TYPE USING [Base, Index, Limit];
Symbols: DEFINITIONS = {
Base: TYPE ~ Table.Base;
Limit: CARDINAL ~ Table.Limit;
-- Hash Table
HVLength: NAT ~ 71;
HVIndex: TYPE ~ NAT [0..HVLength);
HTRecord: TYPE ~ RECORD [link: HTIndex, offset: CARDINAL];
HTNull: HTIndex ~ HTIndex.FIRST;
HTIndex: TYPE ~ NAT [0..Limit/2);
-- 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];
STNull: STIndex ~ STIndex.LAST;
STIndex: TYPE ~ Base RELATIVE POINTER [0..Limit) TO STRecord;
-- to share source modules with compiler
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];
CXNull: CXIndex ~ CXIndex.LAST;
CXIndex: TYPE ~ Base RELATIVE POINTER [0..Limit) TO CXRecord;
}.