-- RefTab.Mesa - definitions for REF table abstraction -- last change: Bill Paxton - August 19, 1982 9:24 am -- last change: Warren Teitelman - August 31, 1982 2:20 pm RefTab: CEDAR DEFINITIONS = BEGIN Ref: TYPE = REF RefTabRep; RefTabRep: TYPE; Key: TYPE = REF; Val: TYPE = REF; Create: PROC [mod: CARDINAL _ 17, zone: ZONE _ NIL] RETURNS [Ref]; -- creates new table with suggested hash size -- if zone is NIL, will do allocates from system zone GetSize: PROC [x: Ref] RETURNS [CARDINAL]; -- returns number of key-value pairs in table Fetch: PROC [x: Ref, key: Key] RETURNS [found: BOOLEAN, val: Val]; -- looks up key in table, returns associated value (if any) -- if found is TRUE, val is value associated with given key -- if found is FALSE, val is NIL Replace: PROC [x: Ref, key: Key, val: Val] RETURNS [BOOLEAN]; -- returns TRUE after overwriting old value for existing key-value pair -- if no previous value for key, returns FALSE without inserting new pair Store: PROC [x: Ref, key: Key, val: Val] RETURNS [BOOLEAN]; -- returns TRUE after inserting new pair -- returns FALSE after overwriting old value for existing key-value pair Insert: PROC [x: Ref, key: Key, val: Val] RETURNS [BOOLEAN]; -- returns TRUE after inserted new pair -- if previous value existed for key, returns FALSE without changing value Delete: PROC [x: Ref, key: Key] RETURNS [BOOLEAN]; -- deletes key-value pair associated with given key -- returns TRUE if deletion actually occurred, FALSE if no such key Pairs: PROC [x: Ref, action: EachPairAction] RETURNS [BOOLEAN]; -- enumerates pairs currently in symbol table in unspecified order -- pairs inserted/deleted during enumeration may or may not be seen -- applies action to each pair until action returns TRUE or no more pairs -- returns TRUE if some action returns TRUE EachPairAction: TYPE = PROC [key: Key, val: Val] RETURNS [quit: BOOLEAN]; END. ΚQ– "Mesa" style˜Iprocšœ!ΟkœΟcqœ œ œœ œœœ œœ œœΟnœœœ œœœ ž.œž6œŸœœ œœž.œŸœœœ œž<œž<œž!œŸœœœœžHœžJœŸœœœœž)œžIœŸœœœœž(œžKœŸœœœœž4œžDœŸœœ"œœžCœžDœžJœž,œŸœœœœœœ˜Λ—…—Ξ %