
package Asis.Toolkit.ObjectAda.Expressions is

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

  function Entity_Declaration
		  (Expr : in Asis.Expression) return Asis.Declaration;

-----------------------------------------------------------------
-- Expr - Specifies the expression to query
-- 
-- Resolves named expressions to a declaration.
-- Ultimately calls Asis.Expressions.Corresponding_Name_Declaration 
-- once an appropriate expression for it has been resolved.
--
-- Returns the Entity_Declaration of the Asis.Expressions.Prefix of:
--      An_Indexed_Component
--      A_Function_Call
--      A_Slice
--      An_Explicit_Dereference
--      An_Attribute_Reference
--
-- Returns the Entity_Declaration of the 
-- Asis.Expressions.Expression_Parenthesized of:
--      A_Parenthesized_Expression
--
-- Returns the Entity_Declaration of the Asis.Expressions.Selector of:
--      A_Selected_Component

-- Returns the Corresponding_Name_Declaration of:
--      An_Identifier
--      An_Operator_Symbol
--      A_Character_Literal
--      An_Enumeration_Literal
--
-- Returns an Asis.Nil_Element for all other Expression_Kinds
--
-- Examples:
--      A.B.C(1) returns the declaration of C
--      slice(1..10) returns the declaration of slice
--      dereference.all returns the declaration of dereference
--      integer'first return the declaration of integer
--      selected.component returns the declaration of selected.component
--      (function_call(params)) returns the declaration of function_call
--      identifier returns the declaration of identifier
--      True returns the declaration of True
--      123.456 returns Asis.Nil_Element
--
-----------------------------------------------------------------

  function Entity_Name_Image
		  (Expr : in Asis.Expression) return String;

-----------------------------------------------------------------
-- Expr - Specifies the expression to query
-- 
-- Resolves named expressions to a meaningfull name.
-- Ultimately calls Asis.Expressions.Name_Image once an appropriate 
-- expression for it has been resolved.
--
-- Returns the Entity_Name_Image of the Asis.Expressions.Prefix of:
--      An_Indexed_Component
--      A_Function_Call
--      A_Slice
--      An_Explicit_Dereference
--      An_Attribute_Reference
--
-- Returns the Entity_Name_Image of the 
-- Asis.Expressions.Expression_Parenthesized of:
--      A_Parenthesized_Expression
--
-- Returns the Entity_Name_Image of the Asis.Expressions.Prefix & "." &
--             Entity_Name_Image of the Asis.Expressions.Selector of:
--      A_Selected_Component

-- Returns the string name image of:
--      An_Identifier
--      An_Operator_Symbol
--      A_Character_Literal
--      An_Enumeration_Literal
--
-- Returns a null string "" for all other Expression_Kinds
--
-- Examples:
--      A.B.C(1) returns "A.B.C"
--      slice(1..10) returns "slice"
--      dereference.all returns "dereference"
--      integer'first return "integer"
--      selected.component returns "selected.component"
--      (function_call(params)) returns "function_call"
--      identifier returns "identifier"
--      True returns "True"
--      123.456 returns ""
--
-----------------------------------------------------------------

  function Entity_Full_Expanded_Name_Image
		  (Expr : in Asis.Expression) return String;

-----------------------------------------------------------------
-- Expr - Specifies the expression to query
-- 
-- Returns the full expanded name of the Entity_Declaration of Expr.
--
-- Returns a null string "" if Is_Nil(Entity_Declaration(Expr)).
--
-----------------------------------------------------------------

end Asis.Toolkit.ObjectAda.Expressions;



