-- This package provides some useful Ada and Environment name operations.
--
package Names is

    function Is_Simple_Ada_Name (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a valid simple Ada name
    -- (i.e. "Foo", or "Two_Words"). Leading or trailing blanks are not
    -- permitted.

    function Is_Dotted_Ada_Name (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a valid Ada name containing
    -- at least one '.' (i.e. "Foo.Bar"). Leading or trailing blanks are
    -- not permitted.

    function Is_Ada_Name (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a simple Ada name or a
    -- dotted Ada name. Leading or trailing blanks are not permitted.

    function Is_Pathname (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a valid Environment pathname
    -- (i.e. "$$.Foo.@.Bar").

    function Is_Fully_Qualified_Pathname
                (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a valid fully qualified
    -- Environment pathname (i.e. "!Foo.Bar").

    function Is_User_Name (This_String : in String) return Boolean;
    --
    -- Returns True iff the specified string is a valid username
    -- (i.e. "JLS" or "Demo_1").

    function Unique_Temporary_File_Name return String;
    --
    -- Returns the fully-qualified name of a file located in "!Machine.
    -- Temporary".
    --
    -- This function will return a different name each time it is called,
    -- so the return value must be assigned to a string constant if it is
    -- going to be used more than once.

    function Indirect_File_Name_For (This_File_Name : in String) return String;
    --
    -- This function returns a filename indicating that the specified file
    -- is to be used as an indirect file for naming resolution.

    function All_Objects_In (This_Library : in String;
                             Include_Object_Itself : in Boolean;
                             Transitive : in Boolean) return String;
    --
    -- Returns a naming expression which resolves to all objects in the
    -- specified library.
    --
    -- If "Transitive" is True, returns a naming expression which will
    -- resolve to every object in the specified library, no matter how
    -- deeply nested; otherwise returns only the objects contained directly
    -- within the specified library.
    --
    -- If "Include_Object_Itself" is True, adds the library itself to the
    -- naming expression.

end Names;