package String_Utilities is

    procedure Make_Uppercase (The_String : in out String);
    procedure Make_Lowercase (The_String : in out String);
    procedure Capitalize (The_String : in out String);
    procedure Uncapitalize (The_String : in out String);
    procedure Replace (The_Character : in Character;
                       With_The_Character : in Character;
                       In_The_String : in out String;
                       Case_Sensitive : in Boolean := True);

    function Uppercase (The_String : in String)  
                       return String;
    function Lowercase (The_String : in String)  
                       return String;
    function Capitalized (The_String : in String)  
                         return String;
    function Uncapitalized (The_String : in String) return String;
    function Replaced (The_Character : in Character;
                       With_The_Character : in Character;
                       In_The_String : in String;
                       Case_Sensitive : in Boolean := True) return String;

    function Is_Null (The_String : in String)  
                     return Boolean;
    function Is_Control (The_String : in String)  
                        return Boolean;
    function Is_Graphic (The_String : in String)  
                        return Boolean;
    function Is_Uppercase (The_String : in String)  
                          return Boolean;
    function Is_Lowercase (The_String : in String)  
                          return Boolean;
    function Is_Digit (The_String : in String)  
                      return Boolean;
    function Is_Alphabetic (The_String : in String)  
                           return Boolean;
    function Is_Alphanumeric (The_String : in String)  
                             return Boolean;
    function Is_Special (The_String : in String)  
                        return Boolean;
    function Centered (The_String : in String;  
                       In_The_Width : in Positive;
                       With_The_Filler : in Character) return String;
    function Left_Justified (The_String : in String;
                             In_The_Width : in Positive;
                             With_The_Filler : in Character) return String;
    function Right_Justified (The_String : in String;
                              In_The_Width : in Positive;
                              With_The_Filler : in Character) return String;
    function Stripped (The_Character : in Character;
                       From_The_String : in String;
                       Case_Sensitive : in Boolean := True)  
                      return String;
    function Stripped_Leading
                (The_Character : in Character;
                 From_The_String : in String;
                 Case_Sensitive : in Boolean := True) return String;
    function Stripped_Trailing (The_Character : in Character;
                                From_The_String : in String;
                                Case_Sensitive : in Boolean := True)  
                               return String;
    function Number_Of (The_Character : in Character;
                        In_The_String : in String;
                        Case_Sensitive : in Boolean := True)  
                       return Natural;
    function Number_Of (The_String : in String;
                        In_The_String : in String;
                        Case_Sensitive : in Boolean := True) return Natural;
    function Location_Of (The_Character : in Character;
                          In_The_String : in String;
                          Case_Sensitive : in Boolean := True;
                          Forward : in Boolean := True) return Natural;
    function Is_Equal (Left : in String;
                       Right : in String;
                       Case_Sensitive : in Boolean := True)  
                      return Boolean;
    function Is_Less_Than (Left : in String;
                           Right : in String;
                           Case_Sensitive : in Boolean := True)  
                          return Boolean;
    function Is_Greater_Than (Left : in String;
                              Right : in String;
                              Case_Sensitive : in Boolean := True)  
                             return Boolean;

    Lexical_Error : exception;

end String_Utilities;