<> <> DIRECTORY RedBlackTree; RedBlackTreeExtras: CEDAR DEFINITIONS = {OPEN RedBlackTree; GetIDKey: GetKey; <> NewRefTable: PROC RETURNS [Table]; <> NewRopeTable: PROC [case: BOOL _ TRUE] RETURNS [Table]; <> StatelessEnumerateIncreasing: PROC [self: Table, procToApply: EachNode, getKey: GetKey]; StatelessEnumerateDecreasing: PROC [self: Table, procToApply: EachNode, getKey: GetKey]; <<`procToApply' is relatively unrestricted: it only needs to refrain from trashing the key of its `data'. In particular, it is NOT prohibited from doing other RedBlackTree operations on `self'.>> DeleteData: PROC [self: Table, deleteKey: Key] RETURNS [deletedData: UserData]; <> REFPair: TYPE = REF REFPairPrivate; REFPairPrivate: TYPE = RECORD [ key, value: REF ANY]; GetRPKey: GetKey; <> NewRefMap: PROC RETURNS [Table]; <> NewRopeMap: PROC [case: BOOL _ TRUE] RETURNS [Table]; <> Fetch: PROC [table: Table, key: REF ANY] RETURNS [found: BOOLEAN, value: REF ANY]; <> Store: PROC [table: Table, key, value: REF ANY] RETURNS [new: BOOLEAN]; <> <> }.