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]; }. RCMapOps.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Rovner On September 19, 1983 9:31 pm Russ Atkinson (RRA) January 31, 1985 1:11:22 pm PST Satterthwaite April 23, 1986 11:34:52 am PST TYPEs OPERATIONs Create an RCMapTable object ASSUME ptr was allocated by VM.Allocate Note that access to this object is not monitored Retrieve info about the RCMap.Base Returns the RCMap.Index of the RCMap for the specified type. Makes an entry if necessary. Merges the specified RCMap.Base into the table object. If zone # NIL, allocates and returns a MapMap Does a MapMap lookup: returns the index in the current RCMap.Base that corresponds to the specified index in the RCMap.Base that Include processed. BEWARE: If you allow expansion of the RCMap Base, you must be careful about concurrent access to the existing Base. In current Cedar, for performance reasons (all accesses to the Base would have to be protected by a monitor), the Cedar runtime does not allow expansion (ERROR if RCMap Base overflows). Κ»˜codešœ ™ Kšœ Οmœ1™Kš œ žœžœžœ žœžœ ˜BKšœ žœžœ˜1K˜—šœ ™ ˜K™Kšœ'™'K™0—šŸœžœ˜ Kšœž œžœ˜Kšœžœžœ˜>Kšœžœžœ˜Kšžœžœ˜K˜—Kš Ÿœžœžœžœžœ˜(˜Kšœ"™"—Kš Ÿœžœžœžœžœ˜D˜Kšœ<™