<<>> <> <> <> <> DIRECTORY RCMap USING [Base, Index], SymbolTable USING [Base], Symbols USING[Type, MDIndex]; RCMapOps: DEFINITIONS = { <> RCMapTable: TYPE; RCMT: TYPE = LONG POINTER TO RCMapTable; OuterProc: TYPE = PROC [ stb: SymbolTable.Base, mdi: Symbols.MDIndex, inner: PROC [base: SymbolTable.Base]]; MapMap: TYPE = LONG POINTER TO MapMapObj; -- built by Include MapMapObj: TYPE = RECORD [SEQUENCE length: CARDINAL OF MapMapItem]; MapMapItem: TYPE = RECORD [old, new: RCMap.Index]; <> Create: PROC [zone: UNCOUNTED ZONE, outerProc: OuterProc ¬ NIL, expansionOK: BOOL ¬ FALSE] RETURNS [RCMT]; <> <> Destroy: PROC [rcmt: RCMT] RETURNS [RCMT]; GetSpan: PROC [rcmt: RCMT] RETURNS [base: RCMap.Base, size: CARD]; <> Acquire: PROC [rcmt: RCMT, stb: SymbolTable.Base, type: Symbols.Type] RETURNS [RCMap.Index]; <> <> Include: PROC [rcmt: RCMT, rcmb: RCMap.Base, size: CARD, zone: UNCOUNTED ZONE¬NIL] RETURNS [MapMap]; <> <> FindMapMapEntry: PROC [mapMap: MapMap, oldIndex: RCMap.Index] RETURNS [RCMap.Index]; <> Enumerate: PROC [base: RCMap.Base, limit: CARD, proc: Visitor] RETURNS [stopped: BOOLEAN]; Visitor: TYPE = PROC [rcmx: RCMap.Index] RETURNS [stop: BOOL ¬ FALSE]; }. <>