DIRECTORY Ascii USING [Digit], MTMiscOps, Rope USING [Cat, Equal, Fetch, FromChar, IsEmpty, Length, ROPE, Translate, TranslatorType]; MTMiscOpsImpl: CEDAR PROGRAM IMPORTS Ascii, Rope EXPORTS MTMiscOps = BEGIN OPEN MTMiscOps; Lookup: PUBLIC PROC [name: Rope.ROPE, table: Table] RETURNS [BOOL] = { WHILE table # NIL DO IF name.Equal[table.first, FALSE] THEN RETURN [TRUE]; table _ table.rest; ENDLOOP; RETURN [FALSE]; }; AToI: PUBLIC PROC [r: Rope.ROPE] RETURNS [i: INT] ~ { j: INT; i _ 0; FOR j _ 0, j+1 WHILE j < r.Length AND Ascii.Digit[r.Fetch[j]] DO i _ i*10 + (r.Fetch[j]-'0); ENDLOOP; }; IToA: PUBLIC PROC [i: INT] RETURNS [r: Rope.ROPE] ~ { minus: BOOL ~ i < 0; IF minus THEN i _ -i; r _ NIL; WHILE i > 0 DO r _ Rope.Cat[Rope.FromChar[i MOD 10 + '0], r]; i _ i / 10; ENDLOOP; IF r.IsEmpty THEN r _ "0"; IF minus THEN r _ Rope.Cat["-", r]; }; Substitute: PUBLIC PROC [r: Rope.ROPE, oldChar, newChar: CHAR] RETURNS [newR: Rope.ROPE] ~ { Translator: Rope.TranslatorType ~ { IF old = oldChar THEN RETURN [newChar] ELSE RETURN [old]; }; RETURN [r.Translate[translator: Translator]]; }; END. \MTMiscOpsImpl.mesa Last Edited by: HGM, March 4, 1984 0:02:34 am PST Last Edited by: Nichols, July 13, 1983 5:13 pm Last Edited by: Taft, February 5, 1984 1:41:45 pm PST Returns TRUE if name is in table. Convert the leading digits of r into an integer. Convert i into a rope. Return r with newChar substituted for every instance of oldChar. Κ0˜head™Ibody™1L™.L™5code2šΟk ˜ Mšœœ ˜M˜ Mšœœ0œ˜[——šœœ˜Mšœ ˜Mšœ ˜Mš œ ˜š Οnœœœ œœœ˜FM™!šœ œ˜Mšœœ œœ˜5M˜Mš˜—Mšœœ˜M˜—š žœœœ œœœ˜5M™0Mšœœ˜M˜M˜šœ œœ˜@M˜Mšœ˜—M˜—š žœœœœœ œ˜5M™Mšœœ ˜M˜šœ˜ M˜—Mšœœ˜šœ˜Mšœœ˜.M˜ Mšœ˜—šœ ˜M˜—šœ˜ M˜—M˜—šž œœœ œœœ œ˜\M™@šž œ˜#Mšœœœ ˜&Mšœœ˜M˜M˜—Mšœ'˜-M˜—Mšœ˜——…—HΤ