<> <> <> <<>> DIRECTORY BigIntegers USING [BigFromSmall, BigINT], Rope USING [Cat, Equal, ROPE], SaffronBaseDef USING [], SaffronErrorHandling USING [InternalError], SaffronGenericDef USING [DecimalnumNode, FlnumNode, HexnumNode, IdNode, IdNodeBody, OctalnumNode, StringNode, StringNodeBody]; SaffronRandomBaseFunctionsImpl: CEDAR PROGRAM IMPORTS BigIntegers, Rope, SaffronErrorHandling EXPORTS SaffronBaseDef = BEGIN OPEN SaffronGenericDef; RopeFromId: PUBLIC PROC [ id: IdNode ] RETURNS [ Rope.ROPE ] ~ { RETURN[IF ( id # NIL ) THEN id.text ELSE ""]; }; RopeFromString: PUBLIC PROC [ string: StringNode ] RETURNS [ Rope.ROPE ] ~ { RETURN[IF ( string # NIL ) THEN string.text ELSE ""]; }; RopeFromDecimalnum: PUBLIC PROC [num: DecimalnumNode] RETURNS [Rope.ROPE] ~ { RETURN[num.text]; }; RopeFromOctalnum: PUBLIC PROC [num: OctalnumNode] RETURNS [Rope.ROPE] ~ { RETURN[num.text]; }; RopeFromHexnum: PUBLIC PROC [num: HexnumNode] RETURNS [Rope.ROPE] ~ { RETURN[num.text]; }; RopeFromFlnum: PUBLIC PROC [num: FlnumNode] RETURNS [Rope.ROPE] ~ { RETURN[num.text]; }; StringFromId: PUBLIC PROC [id: IdNode] RETURNS [StringNode] = BEGIN RETURN[NEW[StringNodeBody _ [text: id.text, position: id.position, length: id.length]]]; END; IdFromRope: PUBLIC PROC [r: Rope.ROPE] RETURNS [IdNode] = BEGIN RETURN[NEW[IdNodeBody _ [text: r, position: 0, length: 0]]]; END; True: PUBLIC PROC RETURNS [ BOOLEAN ] ~ { RETURN[TRUE] }; False: PUBLIC PROC RETURNS [ BOOLEAN ] ~ { RETURN[FALSE] }; And: PUBLIC PROC [a, b: BOOLEAN] RETURNS [BOOLEAN] ~ { RETURN[a AND b] }; Or: PUBLIC PROC [a, b: BOOLEAN] RETURNS [BOOLEAN] ~ { RETURN[a OR b] }; Not: PUBLIC PROC [a: BOOLEAN] RETURNS [BOOLEAN] ~ { RETURN[NOT a] }; BooleanConst: PUBLIC PROC [ r: Rope.ROPE ] RETURNS [ BOOLEAN ] ~ { SELECT TRUE FROM Rope.Equal[r, "True"] => RETURN[TRUE]; Rope.Equal[r, "False"] => RETURN[FALSE]; ENDCASE => ERROR SaffronErrorHandling.InternalError[Rope.Cat["Bad argument (", r, ") to SaffronContextCreateCTImpl.BooleanConst"]]; }; Error: PUBLIC PROC [ r: Rope.ROPE ] RETURNS [ BOOLEAN ] ~ { ERROR }; NullId: PUBLIC PROC RETURNS [ IdNode ] ~ { RETURN[NIL] }; DummyBigINT: PUBLIC PROC RETURNS [BigIntegers.BigINT] = BEGIN RETURN [BigIntegers.BigFromSmall[239]]; END; END.