--------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- -- 16 package Asis.Definitions --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- package Asis.Definitions is --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- -- Asis.Definitions encapsulates a set of queries that operate on A_Definition -- and An_Association elements. --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- -- 16.1 function Corresponding_Type_Operators --------------------------------------------------------------------------------------- --|ER A_Type_Definition - 3.2.1 --------------------------------------------------------------------------------------- function Corresponding_Type_Operators (Type_Definition : in Asis.Type_Definition) return Asis.Declaration_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the type to query -- -- Returns a list of operators. These include all predefined operators, and -- all user-defined operator overloads, that have been implicitly or -- explicitly declared for the type. (Reference Manual 7.3.1(2)) -- -- This list includes only operators appropriate for the type, from the set: -- and or xor = /= < <= > >= + - & * / mod rem ** abs not -- -- Returns a Nil_Element_List if there are no predefined or overloaded -- operators for the type. -- -- Returns a Nil_Element_List if the implementation does not provide -- such implicit declarations. -- -- The Enclosing_Element for each implicit declaration is the declaration (type -- or object) that declared the type. -- -- For limited private types, if a user-defined equality operator has -- been defined, an Ada implementation has two choices when dealing with an -- instance of the "/=" operator. a) treat A/=B as NOT(A=B), b) implicitly -- create a "/=" operator. Implementations that take the second alternative -- will include this implicit inequality operation in their result. -- Implementations that choose the first alternative are encouraged to hide -- this choice beneath the ASIS interface and to "fake" an inequality -- operation. Failing that, the function call, representing the NOT -- operation, must have Is_Part_Of_Implicit = True so that an ASIS application -- can tell the difference between a user-specified NOT(A=B) and an -- implementation-specific A/=B transformation. -- -- Appropriate Definition_Kinds: -- A_Type_Definition -- A_Formal_Type_Definition -- -- Returns Declaration_Kinds: -- A_Function_Declaration -- A_Function_Body_Declaration -- A_Function_Body_Stub -- A_Function_Renaming_Declaration -- A_Function_Instantiation -- A_Formal_Function_Declaration -- --|IP Implementation Permissions: --|IP --|IP The result may or may not include language defined operators that have --|IP been overridden by user-defined overloads. Operators that are totally --|IP hidden, in all contexts, by user-defined operators may be omitted from --|IP the list. --|IP --|IP Some implementations do not represent all forms of implicit --|IP declarations such that elements representing them can be easily --|IP provided. An implementation can choose whether or not to construct --|IP and provide artificial declarations for implicitly declared elements. -- --|ER---------------------------------------------------------------------------------- --|ER A_Derived_Type_Definition - 3.4 --|CR --|CR Child elements returned by: --|CR function Parent_Subtype_Indication --|ER---------------------------------------------------------------------------------- --|ER A_Derived_Record_Extension_Definition - 3.4 --|CR --|CR Child elements returned by: --|CR function Parent_Subtype_Indication --|CR function Record_Definition -- --------------------------------------------------------------------------------------- -- 16.2 function Parent_Subtype_Indication --------------------------------------------------------------------------------------- function Parent_Subtype_Indication (Type_Definition : in Asis.Type_Definition) return Asis.Subtype_Indication; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the derived_type_definition to query -- -- Returns the parent_subtype_indication following the reserved word "new". -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Returns Definition_Kinds: -- A_Subtype_Indication -- --------------------------------------------------------------------------------------- -- 16.3 function Record_Definition --------------------------------------------------------------------------------------- function Record_Definition (Type_Definition : in Asis.Type_Definition) return Asis.Definition; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the definition to query -- -- Returns the record definition of the type_definition. -- -- Appropriate Type_Kinds: -- A_Derived_Record_Extension_Definition -- A_Record_Type_Definition -- A_Tagged_Record_Type_Definition -- -- Returns Definition_Kinds: -- A_Record_Definition -- A_Null_Record_Definition -- --------------------------------------------------------------------------------------- -- 16.4 function Implicit_Inherited_Declarations --------------------------------------------------------------------------------------- function Implicit_Inherited_Declarations (Definition : in Asis.Definition) return Asis.Declaration_List; --------------------------------------------------------------------------------------- -- Definition - Specifies the derived type to query -- -- Returns a list of Is_Part_Of_Implicit inherited enumeration literals, -- discriminants, components, protected subprograms, or entries of a -- derived_type_definition whose parent type is an enumeration type, or a -- composite type other than an array type. See Reference Manual 3.4(10-14). -- -- Returns a Nil_Element_List if the root type of derived_type_definition is -- not an enumeration, record, task, or protected type. -- -- Returns a Nil_Element_List if the implementation does not provide -- such implicit declarations. -- -- The Enclosing_Element for each of the implicit declarations is the -- Declaration argument. -- -- Appropriate Definition_Kinds: -- A_Type_Definition -- A_Private_Extension_Definition -- A_Formal_Type_Definition -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Derived_Type_Definition -- -- Returns Declaration_Kinds: -- -- An_Enumeration_Literal_Specification -- A_Discriminant_Specification -- A_Component_Declaration -- A_Procedure_Declaration -- A_Function_Declaration -- An_Entry_Declaration -- --|IP Implementation Permissions: --|IP --|IP Some implementations do not represent all forms of implicit --|IP declarations such that elements representing them can be easily --|IP provided. An implementation can choose whether or not to construct --|IP and provide artificial declarations for implicitly declared elements. -- --|AN Application Note: --|AN --|AN This query returns only implicit inherited entry declarations for --|AN derived task types. All representation clauses and pragmas associated --|AN with the entries of the original task type (the root type of the --|AN derived task type) apply to the inherited entries. Those are available --|AN by examining the original type or by calling Corresponding_Pragmas and --|AN Corresponding_Representation_Clauses. These functions will return the --|AN pragmas and clauses from the original type. -- --------------------------------------------------------------------------------------- -- 16.5 function Implicit_Inherited_Subprograms --------------------------------------------------------------------------------------- function Implicit_Inherited_Subprograms (Definition : in Asis.Definition) return Asis.Declaration_List; --------------------------------------------------------------------------------------- -- Definition - Specifies the derived type to query -- -- Returns the list of user-defined inherited primitive subprograms that have -- been implicitly declared for the derived_type_definition. -- -- The list result does not include hidden inherited subprograms (Reference Manual 8.3). -- -- Returns a Nil_Element_List if there are no inherited subprograms for the -- derived type. -- -- Returns a Nil_Element_List if the implementation does not provide -- such implicit declarations. -- -- The Enclosing_Element for each of the subprogram declarations is the -- Definition argument. -- -- Appropriate Definition_Kinds: -- A_Type_Definition -- A_Private_Extension_Definition -- A_Formal_Type_Definition -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Derived_Type_Definition -- -- Returns Declaration_Kinds: -- A_Function_Declaration -- A_Procedure_Declaration -- --|IP Implementation Permissions: --|IP --|IP Some implementations do not represent all forms of implicit --|IP declarations such that elements representing them can be easily --|IP provided. An implementation can choose whether or not to construct --|IP and provide artificial declarations for implicitly declared elements. -- --------------------------------------------------------------------------------------- -- 16.6 function Corresponding_Parent_Subtype --------------------------------------------------------------------------------------- function Corresponding_Parent_Subtype (Type_Definition : in Asis.Type_Definition) return Asis.Declaration; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the derived_type_definition to query -- -- Returns the parent subtype declaration of the derived_type_definition. -- The parent subtype is defined by the parent_subtype_indication. -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Returns Declaration_Kinds: -- An_Ordinary_Type_Declaration -- A_Task_Type_Declaration -- A_Protected_Type_Declaration -- A_Subtype_Declaration -- A_Formal_Type_Declaration -- An_Incomplete_Type_Declaration -- A_Private_Type_Declaration -- A_Private_Extension_Declaration -- --------------------------------------------------------------------------------------- -- 16.7 function Corresponding_Root_Type --------------------------------------------------------------------------------------- function Corresponding_Root_Type (Type_Definition : in Asis.Type_Definition) return Asis.Declaration; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the derived_type_definition to query -- -- This function recursively unwinds all type derivations and subtyping to -- arrive at a full_type_declaration that is neither a derived type nor a -- subtype. -- -- In case of numeric types, this function always returns some user-defined -- type, not an implicitly defined root type corresponding to -- A_Root_Type_Definition. The only ways to get implicitly declared numeric -- root or universal types are to ask for the type of a universal expression -- or from the parameter and result profile of a predefined operation working -- with numeric types. -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Returns Declaration_Kinds: -- An_Ordinary_Type_Declaration -- A_Task_Type_Declaration -- A_Protected_Type_Declaration -- A_Formal_Type_Declaration -- A_Private_Type_Declaration -- A_Private_Extension_Declaration -- --------------------------------------------------------------------------------------- -- 16.8 function Corresponding_Type_Structure --------------------------------------------------------------------------------------- function Corresponding_Type_Structure (Type_Definition : in Asis.Type_Definition) return Asis.Declaration; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the derived_type_definition to query -- -- Returns the type structure from which the specified type definition has -- been derived. This function will recursively unwind derivations and -- subtyping until the type_declaration derives a change of representation or -- is no longer derived. See Reference Manual 13.6. -- -- Appropriate Type_Kinds: -- A_Derived_Type_Definition -- A_Derived_Record_Extension_Definition -- -- Returns Declaration_Kinds: -- An_Ordinary_Type_Declaration -- A_Task_Type_Declaration -- A_Protected_Type_Declaration -- A_Formal_Type_Declaration -- A_Private_Type_Declaration -- A_Private_Extension_Declaration -- --|ER---------------------------------------------------------------------------------- --|ER An_Enumeration_Type_Definition - 3.5.1 --|CR --|CR Child elements returned by: --|CR function Enumeration_Literal_Declarations -- --------------------------------------------------------------------------------------- -- 16.9 function Enumeration_Literal_Declarations --------------------------------------------------------------------------------------- function Enumeration_Literal_Declarations (Type_Definition : in Asis.Type_Definition) return Asis.Declaration_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the enumeration type definition to query -- -- Returns a list of the literals declared in an enumeration_type_definition, -- in their order of appearance. -- -- Appropriate Type_Kinds: -- An_Enumeration_Type_Definition -- -- Returns Declaration_Kinds: -- An_Enumeration_Literal_Specification -- --|ER---------------------------------------------------------------------------------- --|ER A_Signed_Integer_Type_Definition - 3.5.4 --|CR --|CR Child elements returned by: --|CR function Integer_Constraint -- --------------------------------------------------------------------------------------- -- 16.10 function Integer_Constraint --------------------------------------------------------------------------------------- function Integer_Constraint (Type_Definition : in Asis.Type_Definition) return Asis.Range_Constraint; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the signed_integer_type_definition to query -- -- Returns the range_constraint of the signed_integer_type_definition. -- -- Appropriate Type_Kinds: -- A_Signed_Integer_Type_Definition -- -- Returns Constraint_Kinds: -- A_Simple_Expression_Range -- --|ER---------------------------------------------------------------------------------- --|ER A_Modular_Type_Definition - 3.5.4 --|CR --|CR Child elements returned by: --|CR function Mod_Static_Expression -- --------------------------------------------------------------------------------------- -- 16.11 function Mod_Static_Expression --------------------------------------------------------------------------------------- function Mod_Static_Expression (Type_Definition : in Asis.Type_Definition) return Asis.Expression; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the modular_type_definition to query -- -- Returns the static_expression following the reserved word "mod". -- -- Appropriate Type_Kinds: -- A_Modular_Type_Definition -- -- Returns Element_Kinds: -- An_Expression -- --|ER---------------------------------------------------------------------------------- --|ER A_Floating_Point_Definition - 3.5.7 --|CR --|CR Child elements returned by: --|CR functions Digits_Expression and Real_Range_Constraint -- --|ER---------------------------------------------------------------------------------- --|ER A_Decimal_Fixed_Point_Definition - 3.5.9 --|CR --|CR Child elements returned by: --|CR functions Digits_Expression, Delta_Expression, and Real_Range_Constraint -- --------------------------------------------------------------------------------------- -- 16.12 function Digits_Expression --------------------------------------------------------------------------------------- function Digits_Expression (Definition : in Asis.Definition) return Asis.Expression; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the static_expression following the reserved word "digits". -- -- Appropriate Type_Kinds: -- A_Floating_Point_Definition -- A_Decimal_Fixed_Point_Definition -- -- Appropriate Definition_Kinds: -- A_Constraint -- Appropriate Constraint_Kinds: -- A_Digits_Constraint -- -- Returns Element_Kinds: -- An_Expression -- --|ER---------------------------------------------------------------------------------- --|ER An_Ordinary_Fixed_Point_Definition - 3.5.9 --|CR --|CR Child elements returned by: --|CR function Delta_Expression -- --------------------------------------------------------------------------------------- -- 16.13 function Delta_Expression --------------------------------------------------------------------------------------- function Delta_Expression (Definition : in Asis.Definition) return Asis.Expression; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the static_expression following the reserved word "delta". -- -- Appropriate Type_Kinds: -- An_Ordinary_Fixed_Point_Definition -- A_Decimal_Fixed_Point_Definition -- -- Appropriate Definition_Kinds: -- A_Constraint -- Appropriate Constraint_Kinds: -- A_Delta_Constraint -- -- Returns Element_Kinds: -- An_Expression -- --------------------------------------------------------------------------------------- -- 16.14 function Real_Range_Constraint --------------------------------------------------------------------------------------- function Real_Range_Constraint (Definition : in Asis.Definition) return Asis.Range_Constraint; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the real_range_specification range_constraint of the definition. -- -- Returns a Nil_Element if there is no explicit range_constraint. -- -- Appropriate Type_Kinds: -- A_Floating_Point_Definition -- An_Ordinary_Fixed_Point_Definition -- A_Decimal_Fixed_Point_Definition -- -- Appropriate Definition_Kinds: -- A_Constraint -- Appropriate Constraint_Kinds: -- A_Digits_Constraint -- A_Delta_Constraint -- -- Returns Constraint_Kinds: -- Not_A_Constraint -- A_Simple_Expression_Range -- --|ER---------------------------------------------------------------------------------- --|ER An_Unconstrained_Array_Definition 3.6 --|CR --|CR Child elements returned by: --|CR functions Index_Subtype_Definitions and Array_Component_Definition -- --------------------------------------------------------------------------------------- -- 16.15 function Index_Subtype_Definitions --------------------------------------------------------------------------------------- function Index_Subtype_Definitions (Type_Definition : in Asis.Type_Definition) return Asis.Expression_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the array_type_definition to query -- -- Returns a list of the index_subtype_definition subtype mark names for -- an unconstrained_array_definition, in their order of appearance. -- -- Appropriate Type_Kinds: -- An_Unconstrained_Array_Definition -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Unconstrained_Array_Definition -- -- Returns Expression_Kinds: -- An_Identifier -- A_Selected_Component -- --|ER---------------------------------------------------------------------------------- --|ER A_Constrained_Array_Definition 3.6 --|CR --|CR Child elements returned by: --|CR function Discrete_Subtype_Definitions --|CR function Array_Component_Definition -- --------------------------------------------------------------------------------------- -- 16.16 function Discrete_Subtype_Definitions --------------------------------------------------------------------------------------- function Discrete_Subtype_Definitions (Type_Definition : in Asis.Type_Definition) return Asis.Definition_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the array_type_definition to query -- -- Returns the list of Discrete_Subtype_Definition elements of a -- constrained_array_definition, in their order of appearance. -- -- Appropriate Type_Kinds: -- A_Constrained_Array_Definition -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Constrained_Array_Definition -- -- Returns Definition_Kinds: -- A_Discrete_Subtype_Definition -- --------------------------------------------------------------------------------------- -- 16.17 function Array_Component_Definition --------------------------------------------------------------------------------------- function Array_Component_Definition (Type_Definition : in Asis.Type_Definition) return Asis.Component_Definition; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the array_type_definition to query -- -- Returns the Component_Definition of the array_type_definition. -- -- Appropriate Type_Kinds: -- An_Unconstrained_Array_Definition -- A_Constrained_Array_Definition -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Unconstrained_Array_Definition -- A_Formal_Constrained_Array_Definition -- -- Returns Definition_Kinds: -- A_Component_Definition -- --|ER---------------------------------------------------------------------------------- --|ER A_Record_Type_Definition - 3.8 --|ER A_Tagged_Record_Type_Definition - 3.8 --|CR --|CR Child elements returned by: --|CR function Record_Definition --|ER---------------------------------------------------------------------------------- --|ER An_Access_Type_Definition - 3.10 --|CR --|CR Child elements returned by: --|CR function Access_To_Object_Definition --|CR function Access_To_Subprogram_Parameter_Profile --|CR function Access_To_Function_Result_Profile -- --------------------------------------------------------------------------------------- -- 16.18 function Access_To_Object_Definition --------------------------------------------------------------------------------------- function Access_To_Object_Definition (Type_Definition : in Asis.Type_Definition) return Asis.Subtype_Indication; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the Access_Type_Definition to query -- -- Returns the subtype_indication following the reserved word "access". -- -- Appropriate Type_Kinds: -- An_Access_Type_Definition. -- -- Appropriate Formal_Type_Kinds: -- A_Formal_Access_Type_Definition -- -- Appropriate Access_Type_Kinds: -- A_Pool_Specific_Access_To_Variable -- An_Access_To_Variable -- An_Access_To_Constant -- -- Returns Element_Kinds: -- A_Subtype_Indication -- --------------------------------------------------------------------------------------- -- 16.19 function Access_To_Subprogram_Parameter_Profile --------------------------------------------------------------------------------------- function Access_To_Subprogram_Parameter_Profile (Type_Definition : in Asis.Type_Definition) return Asis.Parameter_Specification_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the Access_Type_Definition to query -- -- Returns a list of parameter_specification elements in the formal part of the -- parameter_profile in the access_to_subprogram_definition. -- -- Returns a Nil_Element_List if the parameter_profile has no formal part. -- -- Results of this query may vary across ASIS implementations. Some -- implementations normalize all multiple name parameter_specification elements into -- an equivalent sequence of corresponding single name -- parameter_specification elements. See Reference Manual 3.3.1(7). -- -- Appropriate Type_Kinds: -- An_Access_Type_Definition. -- A_Formal_Access_Type_Definition. -- -- Appropriate Access_Type_Kinds: -- An_Access_To_Procedure -- An_Access_To_Protected_Procedure -- An_Access_To_Function -- An_Access_To_Protected_Function -- -- Returns Declaration_Kinds: -- A_Parameter_Specification -- --------------------------------------------------------------------------------------- -- 16.20 function Access_To_Function_Result_Profile --------------------------------------------------------------------------------------- function Access_To_Function_Result_Profile (Type_Definition : in Asis.Type_Definition) return Asis.Expression; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the Access_Type_Definition to query -- -- Returns the subtype_mark expression for the return type for the access -- function. -- -- Appropriate Type_Kinds: -- An_Access_Type_Definition -- A_Formal_Access_Type_Definition -- -- Appropriate Access_Type_Kinds: -- An_Access_To_Function -- An_Access_To_Protected_Function -- -- Returns Expression_Kinds: -- An_Identifier -- A_Selected_Component -- --|ER---------------------------------------------------------------------------------- --|ER A_Root_Type_Definition - 3.5.4(9), 3.5.6(2) - No child elements --|ER---------------------------------------------------------------------------------- --|ER A_Subtype_Indication - 3.3.2 --|CR --|CR Child elements returned by: --|CR function Subtype_Mark --|CR function Subtype_Constraint -- --------------------------------------------------------------------------------------- -- 16.21 function Subtype_Mark --------------------------------------------------------------------------------------- function Subtype_Mark (Definition : in Asis.Definition) return Asis.Expression; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the subtype_mark expression of the definition. -- -- Appropriate Definition_Kinds: -- A_Subtype_Indication -- A_Discrete_Subtype_Definition -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Subtype_Indication -- A_Discrete_Range -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Subtype_Indication -- A_Formal_Type_Definition -- Appropriate Formal_Type_Kinds: -- A_Formal_Derived_Type_Definition -- -- Returns Expression_Kinds: -- An_Identifier -- A_Selected_Component -- An_Attribute_Reference -- --------------------------------------------------------------------------------------- -- 16.22 function Subtype_Constraint --------------------------------------------------------------------------------------- function Subtype_Constraint (Definition : in Asis.Definition) return Asis.Constraint; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the constraint of the subtype_indication. -- -- Returns a Nil_Element if no explicit constraint is present. -- -- Appropriate Definition_Kinds: -- A_Subtype_Indication -- A_Discrete_Subtype_Definition -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Subtype_Indication -- A_Discrete_Range -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Subtype_Indication -- -- Returns Definition_Kinds: -- Not_A_Definition -- A_Constraint -- --|AN Application Note: --|AN --|AN When an unconstrained subtype indication for a type having --|AN discriminants with default values is used, a Nil_Element is --|AN returned by this function. Use the queries Subtype_Mark, and --|AN Corresponding_Name_Declaration [, and Corresponding_First_Subtype] --|AN to obtain the declaration defining the defaults. -- --|ER---------------------------------------------------------------------------------- --|ER A_Constraint - 3.2.2 --|ER --|ER A_Simple_Expression_Range - 3.5 --|CR --|CR Child elements returned by: --|CR function Lower_Bound --|CR function Upper_Bound -- --------------------------------------------------------------------------------------- -- 16.23 function Lower_Bound --------------------------------------------------------------------------------------- function Lower_Bound (Constraint : in Asis.Range_Constraint) return Asis.Expression; --------------------------------------------------------------------------------------- -- Constraint - Specifies the range_constraint or discrete_range to query -- -- Returns the simple_expression for the lower bound of the range. -- -- Appropriate Constraint_Kinds: -- A_Simple_Expression_Range -- -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Simple_Expression_Range -- -- Returns Element_Kinds: -- An_Expression -- --------------------------------------------------------------------------------------- -- 16.24 function Upper_Bound --------------------------------------------------------------------------------------- function Upper_Bound (Constraint : in Asis.Range_Constraint) return Asis.Expression; --------------------------------------------------------------------------------------- -- Constraint - Specifies the range_constraint or discrete_range to query -- -- Returns the simple_expression for the upper bound of the range. -- -- Appropriate Constraint_Kinds: -- A_Simple_Expression_Range -- -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Simple_Expression_Range -- -- Returns Element_Kinds: -- An_Expression -- --|ER---------------------------------------------------------------------------------- --|ER A_Range_Attribute_Reference - 3.5 --|CR --|CR Child elements returned by: --|CR function Range_Attribute -- --------------------------------------------------------------------------------------- -- 16.25 function Range_Attribute --------------------------------------------------------------------------------------- function Range_Attribute (Constraint : in Asis.Range_Constraint) return Asis.Expression; --------------------------------------------------------------------------------------- -- Constraint - Specifies the range_attribute_reference or -- discrete_range attribute_reference to query -- -- Returns the range_attribute_reference expression of the range. -- -- Appropriate Constraint_Kinds: -- A_Range_Attribute_Reference -- -- Appropriate Discrete_Range_Kinds: -- A_Discrete_Range_Attribute_Reference -- -- Returns Expression_Kinds: -- An_Attribute_Reference -- --|ER---------------------------------------------------------------------------------- --|ER A_Digits_Constraint - 3.5.9 --|CR --|CR Child elements returned by: --|CR function Digits_Expression --|CR function Real_Range_Constraint --|ER---------------------------------------------------------------------------------- --|ER A_Delta_Constraint - J.3 --|CR --|CR Child elements returned by: --|CR function Delta_Expression --|CR function Real_Range_Constraint --|CR------------------------------------------------------------------------------------- --|ER An_Index_Constraint - 3.6.1 --|CR --|CR Child elements returned by: --|CR function Discrete_Ranges -- --------------------------------------------------------------------------------------- -- 16.26 function Discrete_Ranges --------------------------------------------------------------------------------------- function Discrete_Ranges (Constraint : in Asis.Constraint) return Asis.Discrete_Range_List; --------------------------------------------------------------------------------------- -- Constraint - Specifies the array index_constraint to query -- -- Returns the list of discrete_range components for an index_constraint, -- in their order of appearance. -- -- Appropriate Constraint_Kinds: -- An_Index_Constraint -- -- Returns Definition_Kinds: -- A_Discrete_Range -- --|ER------------------------------------------------------------------------------------- --|ER A_Discriminant_Constraint - 3.7.1 --|CR --|CR Child elements returned by: --|CR function Discriminant_Associations -- --------------------------------------------------------------------------------------- -- 16.27 function Discriminant_Associations --------------------------------------------------------------------------------------- function Discriminant_Associations (Constraint : in Asis.Constraint; Normalized : in Boolean := False) return Asis.Discriminant_Association_List; --------------------------------------------------------------------------------------- -- Constraint - Specifies the discriminant_constraint to query -- Normalized - Specifies whether the normalized form is desired -- -- Returns a list of the discriminant_association elements of the -- discriminant_constraint. -- -- Returns a Nil_Element_List if there are no discriminant_association elements. -- -- An unnormalized list contains only explicit associations ordered as they -- appear in the program text. Each unnormalized association has a list of -- discriminant_selector_name elements and an explicit expression. -- -- A normalized list contains artificial associations representing all -- explicit associations. It has a length equal to the number of -- discriminant_specification elements of the known_discriminant_part. The order -- of normalized associations matches the order of discriminant_specification elements. -- -- Each normalized association represents a one on one mapping of a -- discriminant_specification to the explicit expression. A normalized -- association has one A_Defining_Name component that denotes the -- discriminant_specification, and one An_Expression component that is the -- explicit expression. -- -- Appropriate Constraint_Kinds: -- A_Discriminant_Constraint -- -- Returns Association_Kinds: -- A_Discriminant_Association -- --|IR Implementation Requirements: --|IR --|IR Normalized associations are Is_Normalized and Is_Part_Of_Implicit. --|IR Normalized associations are never Is_Equal to unnormalized associations. -- --|IP Implementation Permissions: --|IP --|IP An implementation may choose to normalize its internal representation --|IP to use the defining_identifier element instead of the --|IP discriminant_selector_name element. --|IP --|IP If so, this query will return Is_Normalized associations even if --|IP Normalized is False, and the query Discriminant_Associations_Normalized --|IP will return True. -- --|AN Application Note: --|AN --|AN It is not possible to obtain either a normalized or unnormalized --|AN Discriminant_Association list for an unconstrained record or derived --|AN subtype_indication where the discriminant_association elements are supplied --|AN by default; there is no constraint to query, and a Nil_Element is --|AN returned from the query Subtype_Constraint. -- --|ER---------------------------------------------------------------------------------- --|ER A_Component_Definition - 3.6 --|CR --|CR Child elements returned by: --|CR function Component_Subtype_Indication -- --------------------------------------------------------------------------------------- -- 16.28 function Component_Subtype_Indication --------------------------------------------------------------------------------------- function Component_Subtype_Indication (Component_Definition : in Asis.Component_Definition) return Asis.Subtype_Indication; --------------------------------------------------------------------------------------- -- Component_Definition - Specifies the Component_Definition to query -- -- Returns the subtype_indication of the Component_Definition. -- -- Appropriate Definition_Kinds: -- A_Component_Definition -- -- Returns Definition_Kinds: -- A_Subtype_Indication -- --|ER---------------------------------------------------------------------------------- --|ER A_Discrete_Subtype_Definition - 3.6 --|ER A_Discrete_Range - 3.6.1 --|ER --|ER A_Discrete_Subtype_Indication --|CR --|CR Child elements returned by: --|CR function Subtype_Mark --|CR function Subtype_Constraint --|CR --|CR A_Discrete_Simple_Expression_Range --|CR --|CR Child elements returned by: --|CR function Lower_Bound --|CR function Upper_Bound --|ER --|ER---------------------------------------------------------------------------------- --|ER A_Discrete_Range_Attribute_Reference - 3.5 --|CR --|CR Child elements returned by: --|CR function Range_Attribute --|ER---------------------------------------------------------------------------------- --|ER An_Unknown_Discriminant_Part - 3.7 - No child elements --|ER---------------------------------------------------------------------------------- --|ER A_Known_Discriminant_Part - 3.7 --|CR --|CR Child elements returned by: --|CR function Discriminants -- --------------------------------------------------------------------------------------- -- 16.29 function Discriminants --------------------------------------------------------------------------------------- function Discriminants (Definition : in Asis.Definition) return Asis.Discriminant_Specification_List; -------------------------------------------------------------------------------------- -- Definition - Specifies the known_discriminant_part to query -- -- Returns a list of discriminant_specification elements, in their order of appearance. -- -- Results of this query may vary across ASIS implementations. Some -- implementations normalize all multi-name discriminant_specification elements into -- an equivalent sequence of single name discriminant_specification elements. -- See Reference Manual 3.3.1(7). -- -- Appropriate Definition_Kinds: -- A_Known_Discriminant_Part -- -- Returns Declaration_Kinds: -- A_Discriminant_Specification -- --|ER------------------------------------------------------------------------------------- --|ER A_Record_Definition - 3.8 --|CR --|CR Child elements returned by: --|CR function Record_Components --|CR function Implicit_Components -- --------------------------------------------------------------------------------------- -- 16.30 function Record_Components --------------------------------------------------------------------------------------- function Record_Components (Definition : in Asis.Definition; Include_Pragmas : in Boolean := False) return Asis.Record_Component_List; --------------------------------------------------------------------------------------- -- Definition - Specifies the record_definition or variant to query -- Include_Pragmas - Specifies whether pragmas are to be returned -- -- Returns a list of the components and pragmas of the record_definition or -- variant, in their order of appearance. -- -- Declarations are not returned for implementation-defined components of the -- record_definition. See Reference Manual 13.5.1 (15). These components are not -- normally visible to the ASIS application. However, they can be obtained -- with the query Implicit_Components. -- -- Appropriate Definition_Kinds: -- A_Record_Definition -- A_Variant -- -- Returns Element_Kinds: -- A_Pragma -- A_Declaration -- A_Definition -- A_Clause -- -- Returns Declaration_Kinds: -- A_Component_Declaration -- -- Returns Definition_Kinds: -- A_Null_Component -- A_Variant_Part -- -- Returns Representation_Clause_Kinds: -- An_Attribute_Definition_Clause -- --------------------------------------------------------------------------------------- -- 16.31 function Implicit_Components --------------------------------------------------------------------------------------- function Implicit_Components (Definition : in Asis.Definition) return Asis.Record_Component_List; --------------------------------------------------------------------------------------- -- Definition - Specifies the record_definition or variant to query -- -- Returns a list of all implicit implementation-defined components of the -- record_definition or variant. The Enclosing_Element of each component is -- the Definition argument. Each component is Is_Part_Of_Implicit. -- -- Returns a Nil_Element_List if there are no implicit implementation-defined -- components or if the ASIS implementation does not support such -- implicit declarations. -- -- Appropriate Definition_Kinds: -- A_Record_Definition -- A_Variant -- -- Returns Element_Kinds: -- A_Declaration -- -- Returns Declaration_Kinds: -- A_Component_Declaration -- --|IP Implementation Permissions: --|IP --|IP Some implementations do not represent all forms of implicit --|IP declarations such that elements representing them can be easily --|IP provided. An implementation can choose whether or not to construct --|IP and provide artificial declarations for implicitly declared elements. --|IP --|IP Use the query Implicit_Components_Supported to determine if the --|IP implementation provides implicit record components. -- --|ER---------------------------------------------------------------------------------- --|ER A_Null_Record_Definition - 3.8 - No child elements --|ER---------------------------------------------------------------------------------- --|ER A_Variant_Part - 3.8.1 --|CR --|CR Child elements returned by: --|CR function Discriminant_Direct_Name --|CR function Variants -- --------------------------------------------------------------------------------------- -- 16.32 function Discriminant_Direct_Name --------------------------------------------------------------------------------------- function Discriminant_Direct_Name (Variant_Part : in Asis.Record_Component) return Asis.Name; --------------------------------------------------------------------------------------- -- Variant_Part - Specifies the variant_part to query -- -- Returns the Discriminant_Direct_Name of the variant_part. -- -- Appropriate Definition_Kinds: -- A_Variant_Part -- -- Returns Expression_Kinds: -- An_Identifier -- --------------------------------------------------------------------------------------- -- 16.33 function Variants --------------------------------------------------------------------------------------- function Variants (Variant_Part : in Asis.Record_Component; Include_Pragmas : in Boolean := False) return Asis.Variant_List; --------------------------------------------------------------------------------------- -- Variant_Part - Specifies the variant_part to query -- Include_Pragmas - Specifies whether pragmas are to be returned -- -- Returns a list of variants that make up the record component, in their -- order of appearance. -- -- The only pragmas returned are those following the reserved word "is" -- and preceding the reserved word "when" of first variant, and those between -- following variants. -- -- Appropriate Definition_Kinds: -- A_Variant_Part -- -- Returns Element_Kinds: -- A_Pragma -- A_Definition -- -- Returns Definition_Kinds: -- A_Variant -- --|ER---------------------------------------------------------------------------------- --|ER A_Variant - 3.8.1 --|CR --|CR Child elements returned by: --|CR function Variant_Choices --|CR function Record_Components --|CR function Implicit_Components -- --------------------------------------------------------------------------------------- -- 16.34 function Variant_Choices --------------------------------------------------------------------------------------- function Variant_Choices (Variant : in Asis.Variant) return Asis.Element_List; --------------------------------------------------------------------------------------- -- Variant - Specifies the variant to query -- -- Returns the discrete_choice_list elements, in their order of appearance. -- Choices are either an expression, a discrete range, or an others choice. -- -- Appropriate Definition_Kinds: -- A_Variant -- -- Returns Element_Kinds: -- An_Expression -- A_Definition -- -- Returns Definition_Kinds: -- A_Discrete_Range -- An_Others_Choice -- --|ER---------------------------------------------------------------------------------- --|ER A_Private_Type_Definition - 7.3 - No child elements --|ER A_Tagged_Private_Type_Definition - 7.3 - No child elements --|ER---------------------------------------------------------------------------------- --|ER A_Private_Extension_Definition - 7.3 --|CR --|CR Child elements returned by: --|CR function Ancestor_Subtype_Indication -- --------------------------------------------------------------------------------------- -- 16.35 function Ancestor_Subtype_Indication --------------------------------------------------------------------------------------- function Ancestor_Subtype_Indication (Definition : in Asis.Definition) return Asis.Subtype_Indication; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns the ancestor_subtype_indication following the reserved word "new" -- in the private_extension_declaration. -- -- Appropriate Definition_Kinds: -- A_Private_Extension_Definition -- -- Returns Definition_Kinds: -- A_Subtype_Indication -- --|ER------------------------------------------------------------------------------------- --|ER A_Task_Definition - 9.1 --|ER A_Protected_Definition - 9.4 --|CR --|CR Child elements returned by: --|CR functions Visible_Part_Items and Private_Part_Items -- --------------------------------------------------------------------------------------- -- 16.36 function Visible_Part_Items --------------------------------------------------------------------------------------- function Visible_Part_Items (Definition : in Asis.Definition; Include_Pragmas : in Boolean := False) return Asis.Declarative_Item_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the type_definition to query -- Include_Pragmas - Specifies whether pragmas are to be returned -- -- Returns a list of declarations, representation clauses, and pragmas -- in the visible part of the task or protected definition, in their order -- of appearance. The list does not include discriminant_specification elements of -- the known_discriminant_part, if any, of the protected type or task type -- declaration. -- -- Returns a Nil_Element_List if there are no items. -- -- Appropriate Definition_Kinds: -- A_Task_Definition -- A_Protected_Definition -- -- Returns Element_Kinds: -- A_Pragma -- A_Declaration -- A_Clause -- --------------------------------------------------------------------------------------- -- 16.37 function Private_Part_Items --------------------------------------------------------------------------------------- function Private_Part_Items (Definition : in Asis.Definition; Include_Pragmas : in Boolean := False) return Asis.Declarative_Item_List; --------------------------------------------------------------------------------------- -- Type_Definition - Specifies the task type definition to query -- Include_Pragmas - Specifies whether pragmas are to be returned -- -- Returns a list of declarations, representation clauses, and pragmas in the private -- part of the task or protected definition, in their order of appearance. -- -- Returns a Nil_Element_List if there are no items. -- -- Appropriate Definition_Kinds: -- A_Task_Definition -- A_Protected_Definition -- -- Returns Element_Kinds: -- A_Pragma -- A_Declaration -- A_Clause -- --------------------------------------------------------------------------------------- -- 16.38 function Is_Private_Present --------------------------------------------------------------------------------------- function Is_Private_Present (Definition : in Asis.Definition) return Boolean; --------------------------------------------------------------------------------------- -- Definition - Specifies the definition to query -- -- Returns True if the argument is a task_definition or a protected_definition -- that has a reserved word "private" marking the beginning of a (possibly empty) -- private part. -- -- Returns False for any definition without a private part. -- Returns False for any unexpected Element. -- -- Expected Definition_Kinds: -- A_Task_Definition -- A_Protected_Definition -- --|ER---------------------------------------------------------------------------------- --|ER A_Formal_Type_Definition - 12.5 --|ER --|ER A_Formal_Private_Type_Definition - 12.5.1 - No child elements --|ER A_Formal_Tagged_Private_Type_Definition - 12.5.1 - No child elements --|ER --|ER A_Formal_Derived_Type_Definition --|CR Child elements returned by: --|CR function Subtype_Mark -- --|ER---------------------------------------------------------------------------------- --|ER A_Formal_Discrete_Type_Definition - 12.5.2 - No child elements --|ER A_Formal_Signed_Integer_Type_Definition - 12.5.2 - No child elements --|ER A_Formal_Modular_Type_Definition - 12.5.2 - No child elements --|ER A_Formal_Floating_Point_Definition - 12.5.2 - No child elements --|ER A_Formal_Ordinary_Fixed_Point_Definition - 12.5.2 - No child elements --|ER A_Formal_Decimal_Fixed_Point_Definition - 12.5.2 - No child elements --|ER---------------------------------------------------------------------------------- --|ER A_Formal_Unconstrained_Array_Definition - 12.5.3 --|CR --|CR Child elements returned by: --|CR function Index_Subtype_Definitions --|CR function Array_Component_Definition --|ER---------------------------------------------------------------------------------- --|ER A_Formal_Constrained_Array_Definition - 12.5.3 --|CR --|CR Child elements returned by: --|CR function Discrete_Subtype_Definitions --|CR function Array_Component_Definition --|ER---------------------------------------------------------------------------------- --|ER A_Formal_Access_Type_Definition - 12.5.4 --|CR --|CR Child elements returned by: --|CR function Access_To_Object_Definition --|CR function Access_To_Subprogram_Parameter_Profile --|CR function Access_To_Function_Result_Profile -- --------------------------------------------------------------------------------------- end Asis.Definitions;