DIRECTORY
FileSegment: TYPE USING [Pages, Span, nullPages, nullSpan, voidPages],
SymbolPack: TYPE;
TYPEs
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];
ERRORs
Missing: ERROR [handle: SymbolTable.Handle];
IllegalBase: ERROR [base: SymbolTable.Base];
Locked: ERROR [handle: SymbolTable.Handle, nLocks: NAT];
PROCs
Acquire: PROC [handle: SymbolTable.Handle] RETURNS [SymbolTable.Base];
Release: PROC [base: SymbolTable.Base];
Forget: PROC [handle: SymbolTable.Handle];
BaseToHandle: PROC [base: SymbolTable.Base] RETURNS [SymbolTable.Handle];
CacheSize: PROC RETURNS [pages: CARDINAL];
SetCacheSize: PROC [pages: CARDINAL];
}.