<> <> DIRECTORY Core; StructuralComparison: CEDAR DEFINITIONS = { <> 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 RETURNS [oto: OneToOne]; <> Reverse: PROC [OneToOne] RETURNS [OneToOne]; Translate: PROC [inner, translator: OneToOne, translateForward: BOOL _ TRUE] 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 ]; <> Compare: PROC [ctA, ctB: Core.CellType--of class Record--, hints: OneToOne] RETURNS [isomorphic: BOOL, association: OneToOne]; }.