-- BcdTabDefs.Mesa Edited by Sandman on January 3, 1979 8:55 AM

-- Copyright Xerox Corporation 1979, 1980

DIRECTORY
BcdDefs: FROM "bcddefs" USING [
CTIndex, EXPIndex, FTIndex, IMPIndex, MTIndex],
Table: FROM "table" USING [Base, Index, Limit];

BcdTabDefs: DEFINITIONS =
BEGIN

-- Hash Table

HVLength: PRIVATE INTEGER = 71;
HVIndex: TYPE = INTEGER [0..HVLength);

HTRecord: TYPE = RECORD [
link: HTIndex,
offset: CARDINAL];

HTNull: HTIndex = FIRST[HTIndex];
HTIndex: TYPE = INTEGER [0..Table.Limit);


-- Semantic Table

STRecord: TYPE = RECORD [
filename, assigned: BOOLEAN,
hti: HTIndex,
imported, exported: BOOLEAN,
link: STIndex,
impi: BcdDefs.IMPIndex,
impgfi: CARDINAL,
body: SELECT type: * FROM
unknown => NULL,
local => [
info: Table.Index, --BcdTreeDefs.TreeIndex,
context: CXIndex],
external => [
map: STMap,
pointer: SELECT ptype: * FROM
instance => [sti: STIndex],
file => [fti: BcdDefs.FTIndex],
ENDCASE],
ENDCASE];

STNull: STIndex = LAST[STIndex];
STIndex: TYPE = Table.Base RELATIVE POINTER [0..Table.Limit) TO STRecord;

STMap: TYPE = RECORD [
SELECT type: * FROM
unknown => NULL,
config => [cti: BcdDefs.CTIndex],
module => [mti: BcdDefs.MTIndex],
interface => [expi: BcdDefs.EXPIndex],
ENDCASE];


-- Context Table

CXRecord: TYPE = RECORD [
link: STIndex];

CXNull: CXIndex = LAST[CXIndex];
CXIndex: TYPE = Table.Base RELATIVE POINTER [0..Table.Limit) TO CXRecord;

END.