-- BrandXSymbolDefs.mesa
-- concrete definitions of TYPEs and constants for symbol tables and related elements.
-- Last Modified By Paul Rovner On January 5, 1983 10:46 pm

DIRECTORY
Symbols USING[MDIndex, CTXIndex, ISEIndex, RecordSEIndex, SEIndex, HTIndex, SENull,
CSEIndex, BTNull, RootBti, BTIndex, BodyRecord, MDNull, codeCHAR,
CBTIndex, ICBTIndex, ExtensionType, typeTYPE, StandardContext,
ContextLevel, lL, CTXNull, HTNull, typeANY, OwnMdi, lZ, codeINT],
SymbolSegment USING [FGTEntry, FGHeader],
SymbolTable USING[Base, Handle, nullHandle],
Tree USING[Index, Link];

BrandXSymbolDefs: DEFINITIONS
= BEGIN


--TYPEs--
SymbolTableHandle: TYPE = SymbolTable.Handle;
SymbolTableBase: TYPE = SymbolTable.Base;

SymbolIndex: TYPE = Symbols.SEIndex;
SymbolIdIndex: TYPE = Symbols.ISEIndex;
SymbolConstructorIndex: TYPE = Symbols.CSEIndex;
SymbolRecordIndex: TYPE = Symbols.RecordSEIndex;

SymbolContextIndex: TYPE = Symbols.CTXIndex;
StandardSymbolContextIndex: TYPE = Symbols.StandardContext;

SymbolNameIndex: TYPE = Symbols.HTIndex;

SymbolModuleIndex: TYPE = Symbols.MDIndex;

BodyIndex: TYPE = Symbols.BTIndex;
CallableBodyIndex: TYPE = Symbols.CBTIndex;
InnerCallableBodyIndex: TYPE = Symbols.ICBTIndex;
BodyTableEntry: TYPE = Symbols.BodyRecord;

FineGrainTableEntry: TYPE = SymbolSegment.FGTEntry;
FineGrainTableHeader: TYPE = SymbolSegment.FGHeader;

ExtensionClass: TYPE = Symbols.ExtensionType;

TreeIndex: TYPE = Tree.Index;
TreeLink: TYPE = Tree.Link;

BlockContextLevel: TYPE = Symbols.ContextLevel;

PreDefinedSEI: TYPE = CARDINAL[0..249];


--Constants--

nullHandle: SymbolTableHandle = SymbolTable.nullHandle;
nullSymbolIndex: SymbolIndex = Symbols.SENull;
nullSymbolContextIndex: SymbolContextIndex = Symbols.CTXNull;
nullSymbolNameIndex: SymbolNameIndex = Symbols.HTNull;
nullModuleIndex: SymbolModuleIndex = Symbols.MDNull;
nullBodyIndex: BodyIndex = Symbols.BTNull;

rootBodyIndex: BodyIndex = Symbols.RootBti;

symbolIndexForTYPE: SymbolConstructorIndex = Symbols.typeTYPE;
symbolIndexForANY: SymbolConstructorIndex = Symbols.typeANY;

thisModuleIndex: SymbolModuleIndex = Symbols.OwnMdi;

contextLevelZero: BlockContextLevel = Symbols.lZ;
outerContextLevel: BlockContextLevel = Symbols.lL;

typeCodeForINT: CARDINAL = Symbols.codeINT;
typeCodeForCHAR: CARDINAL = Symbols.codeCHAR;

END.