<<>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> DIRECTORY Basics USING [BITAND, BITOR, BITNOT], Rope USING [ROPE], Tioga USING [Look, Looks, noLooks, allLooks, Runs]; TextLooks: CEDAR DEFINITIONS IMPORTS Basics ~ BEGIN Look: TYPE = Tioga.Look; Looks: TYPE = Tioga.Looks; noLooks: Looks = Tioga.noLooks; allLooks: Looks = Tioga.allLooks; Runs: TYPE ~ Tioga.Runs; <<>> LooksAND: PROC [looks1, looks2: Looks] RETURNS [Looks] ~ INLINE { RETURN[LOOPHOLE[Basics.BITAND[LOOPHOLE[looks1], LOOPHOLE[looks2]]]] }; LooksOR: PROC [looks1, looks2: Looks] RETURNS [Looks] ~ INLINE { RETURN[LOOPHOLE[Basics.BITOR[LOOPHOLE[looks1], LOOPHOLE[looks2]]]] }; LooksNOT: PROC [looks: Looks] RETURNS [Looks] ~ INLINE { RETURN[LOOPHOLE[Basics.BITNOT[LOOPHOLE[looks]]]] }; ModifyLooks: PROC [old, remove, add: Looks] RETURNS [Looks] ~ INLINE { RETURN[LooksOR[LooksAND[old, LooksNOT[remove]], add]] }; Size: PROC [runs: Runs] RETURNS [INT]; <<>> FetchLooks: PROC [runs: Runs, index: INT] RETURNS [Looks]; <<>> LooksToRope: PROC [looks: Looks] RETURNS [rope: Rope.ROPE]; RopeToLooks: PROC [rope: Rope.ROPE] RETURNS [looks: Looks]; END.