-- MCrossUtilities.mesa
				-- P.Rovner May 2, 1983 12:42 pm
DIRECTORY
  Ascii,
  MCrossUtilityDefs,
--  MessageWindow USING[Confirm],
  Rope USING[ROPE, Size, Fetch, Compare];

------------------------------------------------------------------

MCrossUtilities: PROGRAM 

  IMPORTS --MessageWindow, --Rope
  EXPORTS MCrossUtilityDefs
=

BEGIN

--Confirm: PUBLIC PROCEDURE RETURNS[BOOLEAN] =
--  {RETURN[MessageWindow.Confirm["[Confirm] "]]};

IsNumber: PUBLIC PROCEDURE[s: Rope.ROPE] RETURNS[BOOLEAN] =
{ FOR i: INT IN [0..Rope.Size[s])
   DO IF NOT Rope.Fetch[s, i] IN ['0..'9] THEN RETURN[FALSE] ENDLOOP;
  RETURN[TRUE]};

IsTerminator: PUBLIC PROCEDURE[ch: CHARACTER] RETURNS [BOOLEAN] =
 { RETURN[SELECT ch FROM
            IN ['0..'9], IN ['A..'Z], IN ['a..'z] => FALSE,
           ENDCASE => TRUE]};

-- Returns TRUE if the string has only spaces, tabs and CRs
IsLineEmpty: PUBLIC PROCEDURE[line: Rope.ROPE] RETURNS[BOOLEAN] =
{ FOR i: INT IN [0..Rope.Size[line])
   DO SELECT Rope.Fetch[line, i] FROM
        Ascii.SP, Ascii.TAB, Ascii.CR => NULL;
       ENDCASE => RETURN[FALSE] ENDLOOP;
  RETURN[TRUE]};
  
-- Returns True if Str1 is Lexically less then Str2
StringLessThan: PUBLIC PROCEDURE[str1, str2: Rope.ROPE] RETURNS[BOOLEAN] =
 {RETURN[Rope.Compare[str1, str2, FALSE] = less]};
 
-- Returns True if Str1 is equal to Str2
EqualString: PUBLIC PROCEDURE[str1, str2: Rope.ROPE] RETURNS[BOOLEAN] =
 {RETURN[Rope.Compare[str1, str2] = equal]};

END.