<> <> <> <> <> <<>> <> DIRECTORY ParticularTable: TYPE USING [Node, Key]; HashTable: CEDAR DEFINITIONS = { Value: TYPE = ParticularTable.Node; Key: TYPE = ParticularTable.Key; OpsRec: TYPE = RECORD[ GetKey: PROC[v: Value] RETURNS[Key], HashFromKey: PROC[k: Key] RETURNS[CARDINAL], EqualKeys: PROC[k1, k2: Key] RETURNS[BOOL]]; <> Table: TYPE = REF TableRec; TableRec: PRIVATE TYPE = MONITORED RECORD[ ops: OpsRec, size, sizeLimit, inhibitCount: INT, data: REF Seq]; Seq: PRIVATE TYPE = RECORD[nodes: SEQUENCE max: SeqIndex OF NodeList]; SeqIndex: PRIVATE TYPE = NAT; NodeList: PRIVATE TYPE = LIST OF Value; Create: PROC[ops: OpsRec, mod: SeqIndex_71] RETURNS[Table]; <> GetSize: PROC[table: Table] RETURNS[INT]; <> Fetch: PROC[table: Table, key: Key] RETURNS[found: BOOL, value: Value]; <> <> <> Replace: PROC[table: Table, key: Key, value: Value] RETURNS[BOOL]; <> <> Store: PROC[table: Table, key: Key, value: Value] RETURNS[BOOL]; <> <> Insert: PROC[table: Table, key: Key, value: Value] RETURNS[BOOL]; <> <> Delete: PROC[table: Table, key: Key] RETURNS[BOOL]; <> <> ForEach: PROC[table: Table, action: EachValueAction] RETURNS[BOOL]; <> <> <> <> EachValueAction: TYPE = PROC[value: Value] RETURNS[quit: BOOL _ FALSE]; Erase: PROC[table: Table]; <> }.