<<>> <> <> <> <> <<>> IntToIntTab: CEDAR DEFINITIONS = BEGIN Table: TYPE = REF IntToIntTabRep; IntToIntTabRep: TYPE = MONITORED RECORD [impl: REF IntToIntTabImplRep]; IntToIntTabImplRep: TYPE; Key: TYPE = INT; Val: TYPE = INT; Create: PROC [mod: NAT ¬ 17] RETURNS [Table]; <> GetSize: PROC [table: Table] RETURNS [INT]; <> Fetch: PROC [table: Table, key: Key] RETURNS [found: BOOL, val: Val]; <> <> <> Replace: PROC [table: Table, key: Key, val: Val] RETURNS [BOOL]; <> <> Store: PROC [table: Table, key: Key, val: Val] RETURNS [BOOL]; <> <> Insert: PROC [table: Table, key: Key, val: Val] RETURNS [BOOL]; <> <> Delete: PROC [table: Table, key: Key] RETURNS [BOOL]; <> <> Erase: PROC [table: Table]; <> EachPairAction: TYPE = PROC [key: Key, val: Val] RETURNS [quit: BOOL ¬ FALSE]; <<>> Pairs: PROC [table: Table, action: EachPairAction] RETURNS [BOOL]; <> <> <> <> UpdateOperation: TYPE = {none, store, delete}; <<>> UpdateAction: TYPE = PROC [found: BOOL, val: Val] RETURNS [op: UpdateOperation ¬ none, new: Val ¬ -1]; <<>> Update: PROC [table: Table, key: Key, action: UpdateAction]; <> <> <> Copy: PROC [table: Table] RETURNS [Table]; <> END.