<> <> <> <<>> <<>> <<>> DIRECTORY Rope,OracleGen,Convert; OracleGenImpl: CEDAR PROGRAM IMPORTS Rope,Convert EXPORTS OracleGen ~ BEGIN Bin: PUBLIC PROC [k: CARD] RETURNS [s: Rope.ROPE] ~ { <> s _ Convert.RopeFromCard[from: k, base: 2, showRadix: FALSE]; }; Hex: PUBLIC PROC [k: CARD] RETURNS [s: Rope.ROPE] ~ { <> s _ Convert.RopeFromCard[from: k, base: 16, showRadix: FALSE]; }; <<>> <<>> LExtend: PUBLIC PROC [r: Rope.ROPE, i: INT] RETURNS [s: Rope.ROPE] ~ { <> IF i < Rope.Length[r] THEN ERROR ; s _ r; DO IF i= Rope.Length[s] THEN EXIT ELSE s _ Rope.Concat["0",s]; ENDLOOP; }; BinExt: PUBLIC PROC [k: INT, i: INT] RETURNS [r: Rope.ROPE] ~ { <> r _ LExtend[Bin[k],i]; }; Expand: PUBLIC PROC [r: Rope.ROPE, i: INT] RETURNS [s: Rope.ROPE] ~ { <> <<>> n: INT; b: Rope.ROPE; b _ ""; FOR i IN [0..i) DO b _ Rope.Concat[" ",b] ENDLOOP; n _ Rope.Length[r]; s _ ""; FOR i IN [0..n) DO s _ Rope.Cat[s,b,Rope.Substr[r,i,1]] ENDLOOP; }; << >> <<>> END.