--
-- Components Package CHARACTER_SET
-- by Richard Conn, TI Ada Technology Branch
-- Version 1.1, Date 25 Feb 85
-- Version 1.0, Date 13 Feb 85
--
package Character_Set is

    --
    -- These routines test for the following subsets of ASCII
    --
    -- Routine              Subset tested for
    -- =======              =================
    -- ALPHA                'a'..'z' | 'A'..'Z'
    -- ALPHA_NUMERIC        ALPHA | '0'..'9'
    -- CONTROL              < ' ' | DEL
    -- DIGIT                '0'..'9'
    -- GRAPHIC              ' ' < ch < DEL (does not include space)
    -- HEXADECIMAL          DIGIT | 'A'..'F' | 'a'..'f'
    -- LOWER                'a'..'z'
    -- PRINTABLE            GRAPHIC | ' '
    -- PUNCTUATION          GRAPHIC and not ALPHA_NUMERIC
    -- SPACE                HT | LF | VT | FF | CR | ' '
    -- UPPER                'A'..'Z'
    --
    function Is_Alpha (Ch : Character) return Boolean;
    function Is_Alpha_Numeric (Ch : Character) return Boolean;
    function Is_Control (Ch : Character) return Boolean;
    function Is_Digit (Ch : Character) return Boolean;
    function Is_Graphic (Ch : Character) return Boolean;
    function Is_Hexadecimal (Ch : Character) return Boolean;
    function Is_Lower (Ch : Character) return Boolean;
    function Is_Printable (Ch : Character) return Boolean;
    function Is_Punctuation (Ch : Character) return Boolean;
    function Is_Space (Ch : Character) return Boolean;
    function Is_Upper (Ch : Character) return Boolean;

    --
    -- These routines convert characters and strings to upper- or lower-case
    --
    function To_Lower (Ch : Character) return Character;
    procedure To_Lower (Ch : in out Character);
    procedure To_Lower (Str : in out String);
    function To_Upper (Ch : Character) return Character;
    procedure To_Upper (Ch : in out Character);
    procedure To_Upper (Str : in out String);

    --
    -- These routines return the names of the control characters
    --
    subtype Control_Character_Name_2 is String (1 .. 2);
    subtype Control_Character_Name_3 is String (1 .. 3);
    --
    function Cc_Name_2 (Ch : Character) return Control_Character_Name_2;
    function Cc_Name_3 (Ch : Character) return Control_Character_Name_3;


end Character_Set;
