-- file PackageSymbols.Mesa
-- last modified by Sweet, May 12, 1980  3:21 PM
-- last modified by Satterthwaite, August 27, 1980  9:40 AM

DIRECTORY
  PrincOps: TYPE USING [EPRange, MaxNGfi],
  Symbols: TYPE USING [HTIndex],
  SymbolSegment: TYPE USING [constType],
  Table: TYPE USING [Limit, Selector];

PackageSymbols: DEFINITIONS =
  BEGIN

  MaxEntries: CARDINAL = PrincOps.EPRange*PrincOps.MaxNGfi;

 -- constant table declarations

  WordIndex: TYPE = CARDINAL;

  ConstRecord: TYPE = RECORD [
    offset: WordIndex,
    length: CARDINAL];

  ConstIndex: TYPE = CARDINAL [0..Table.Limit/SIZE[ConstRecord]);

  constType: Table.Selector = SymbolSegment.constType;

 -- body data for outer callable bodies

  OuterPackRecord: TYPE = MACHINE DEPENDENT RECORD [
    hti: Symbols.HTIndex,
    placed, attr1, attr2: BOOLEAN ← FALSE,
    length: CARDINAL,
    firstSon: IPIndex,
    resident: BOOLEAN,
    entryIndex: [0..MaxEntries)];

  OPIndex: TYPE = CARDINAL [0..MaxEntries];
  OPNull: OPIndex = LAST[OPIndex]; 

 -- body data for inner callable bodies

  InnerPackRecord: TYPE = RECORD [
    length: CARDINAL,
    lastSon: BOOLEAN,
    entryIndex: [0..MaxEntries)];

  IPIndex: TYPE = CARDINAL [0..MaxEntries]; -- waste a bit to get a null
  IPNull: IPIndex = LAST[IPIndex]; 

  END.