-- RTSymbolDefs.mesa
-- TYPE definitions for symbol table elements.
-- Last Modified By Paul Rovner On December 21, 1982 2:15 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];

RTSymbolDefs: 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;

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;

StandardSymbolContextIndex: TYPE = Symbols.StandardContext;

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

rootBodyIndex: BodyIndex = Symbols.RootBti;

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

thisModuleIndex: Symbols.MDIndex = Symbols.OwnMdi;

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

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

END.