<> <> <> <> <> DIRECTORY RCMap: TYPE USING[Base, Index], SymbolTable: TYPE USING[Base], Symbols: TYPE 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, ptr: RCMap.Base, nPages: CARDINAL, outerProc: OuterProc_NIL, expansionOK: BOOL_FALSE] RETURNS[RCMT]; Destroy: PROC[rcmt: RCMT] RETURNS[RCMT]; <> GetSpan: PROC[rcmt: RCMT] RETURNS[base: RCMap.Base, size: CARDINAL]; <> <> Acquire: PROC[rcmt: RCMT, stb: SymbolTable.Base, type: Symbols.Type] RETURNS[RCMap.Index]; <> <> Include: PROC[ rcmt: RCMT, rcmb: RCMap.Base, size: CARDINAL, zone: UNCOUNTED ZONE_NIL] RETURNS[MapMap]; <> <> FindMapMapEntry: PROC[mapMap: MapMap, oldIndex: RCMap.Index] RETURNS[RCMap.Index]; Enumerate: PROC[ base: RCMap.Base, limit: CARDINAL, proc: PROC[RCMap.Index] RETURNS[stop: BOOL]] RETURNS[stopped: BOOLEAN]; }. <>