-- file SymbolTable.mesa
-- last modified by Satterthwaite on May 24, 1982 9:13 am

DIRECTORY
  FileSegment: TYPE USING [Pages, Span, nullPages, nullSpan, voidPages],
  SymbolPack: TYPE;

SymbolTable: DEFINITIONS = {

  Handle: TYPE = FileSegment.Pages;
    nullHandle: Handle = FileSegment.nullPages;
    voidHandle: Handle = FileSegment.voidPages;		-- used as flag
    anySpan: FileSegment.Span = FileSegment.nullSpan;	-- wild card for Forget
        
  Base: TYPE = POINTER TO FRAME[SymbolPack];

  Missing: ERROR [handle: SymbolTable.Handle];
  IllegalBase: ERROR [base: SymbolTable.Base];
 
  Acquire: PROC [handle: SymbolTable.Handle] RETURNS [SymbolTable.Base];
  Release: PROC [base: SymbolTable.Base];

  Forget: PROC [handle: SymbolTable.Handle];
  Locked: ERROR [handle: SymbolTable.Handle, nLocks: NAT];
 
  CacheSize: PROC RETURNS [pages: CARDINAL];
  SetCacheSize: PROC [pages: CARDINAL];

  }.