-- 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; }.