<> <> <> DIRECTORY Asserting, HashTable, IO, Rope; OneToOne: CEDAR DEFINITIONS = BEGIN <> OneToOne: TYPE = REF OneToOnePrivate; <> Enumerate: PROC [oto: OneToOne, Consume: PROC [a, b: REF ANY]] = INLINE {oto.Enumerator[oto, Consume]}; Associate: PROC [oto: OneToOne, a, b: REF ANY] <> = INLINE {oto.Associator[oto, a, b]}; Contradiction: ERROR [oto: OneToOne, a, b: REF ANY]; Map: PROC [oto: OneToOne, from: REF ANY, forward: BOOL _ TRUE] RETURNS [to: REF ANY] <> = INLINE {to _ oto.Mapper[oto, from, forward]}; CreateVanillaOneToOne: PROC [hashA, hashB: HashTable.HashProc _ NIL, compareA, compareB: HashTable.EqualProc _ NIL] RETURNS [oto: OneToOne]; <> id: READONLY OneToOne; <> Reverse: PROC [OneToOne] RETURNS [OneToOne]; Triplate: PROC [inward, inner, outward: OneToOne] RETURNS [outer: OneToOne]; <> <> <> OneToOnePrivate: TYPE = RECORD [ Enumerator: PROC [oto: OneToOne, Consume: PROC [a, b: REF ANY]], Associator: PROC [oto: OneToOne, a, b: REF ANY], Mapper: PROC [oto: OneToOne, from: REF ANY, forward: BOOL _ TRUE] RETURNS [REF ANY], data: REF ANY ]; END.