-- abstract interface type conversions (Ada 2005:AI-251)
SSD : Select_Specific_Data_Ptr;
- -- Pointer to a table of records used in dispatching selects. This
- -- field has a meaningful value for all tagged types that implement
- -- a limited, protected, synchronized or task interfaces and have
- -- non-predefined primitive operations.
+ -- Pointer to a table of records used in dispatching selects. This field
+ -- has a meaningful value for all tagged types that implement a limited,
+ -- protected, synchronized or task interfaces and have non-predefined
+ -- primitive operations.
Tags_Table : Tag_Table (0 .. Idepth);
-- Table of ancestor tags. Its size actually depends on the inheritance
type Object_Specific_Data_Ptr is access all Object_Specific_Data;
pragma No_Strict_Aliasing (Object_Specific_Data_Ptr);
- -- The following subprogram specifications are placed here instead of
- -- the package body to see them from the frontend through rtsfind.
+ -- The following subprogram specifications are placed here instead of the
+ -- package body to see them from the frontend through rtsfind.
function Base_Address (This : System.Address) return System.Address;
- -- Ada 2005 (AI-251): Displace "This" to point to the base address of
- -- the object (that is, the address of the primary tag of the object).
+ -- Ada 2005 (AI-251): Displace "This" to point to the base address of the
+ -- object (that is, the address of the primary tag of the object).
procedure Check_TSD (TSD : Type_Specific_Data_Ptr);
-- Ada 2012 (AI-113): Raise Program_Error if the external tag of this TSD
function Get_Offset_Index
(T : Tag;
Position : Positive) return Positive;
- -- Ada 2005 (AI-251): Given a pointer to a secondary dispatch table (T) and
- -- a position of an operation in the DT, retrieve the corresponding
+ -- Ada 2005 (AI-251): Given a pointer to a secondary dispatch table (T)
+ -- and a position of an operation in the DT, retrieve the corresponding
-- operation's position in the primary dispatch table from the Offset
-- Specific Data table of T.
-- has controlled components, returns zero if no controlled components.
pragma Export (Ada, Get_RC_Offset, "ada__tags__get_rc_offset");
- -- This procedure is used in s-finimp to compute the deep routines
- -- it is exported manually in order to avoid changing completely the
- -- organization of the run time.
+ -- This procedure is used in s-finimp to compute the deep routines. It is
+ -- exported manually in order to avoid completely changing the organization
+ -- of the run time.
function Get_Tagged_Kind (T : Tag) return Tagged_Kind;
-- Ada 2005 (AI-345): Given a pointer to either a primary or a secondary
function Offset_To_Top
(This : System.Address) return SSE.Storage_Offset;
- -- Ada 2005 (AI-251): Returns the current value of the offset_to_top
+ -- Ada 2005 (AI-251): Returns the current value of the Offset_To_Top
-- component available in the prologue of the dispatch table. If the parent
-- of the tagged type has discriminants this value is stored in a record
-- component just immediately after the tag component.
-- access to function that must be called to evaluate the offset.
procedure Register_Tag (T : Tag);
- -- Insert the Tag and its associated external_tag in a table for the
- -- sake of Internal_Tag
+ -- Insert the Tag and its associated external_tag in a table for the sake
+ -- of Internal_Tag.
procedure Set_Dynamic_Offset_To_Top
(This : System.Address;
-- To capture global references, analyze the expressions of aspects,
-- and propagate information to original tree. Note that in this case
-- analysis of attributes is not delayed until the freeze point.
+
-- It seems very hard to recreate the proper visibility of the generic
-- subprogram at a later point because the analysis of an aspect may
-- create pragmas after the generic copies have been made ???
Specification => Act_Spec);
-- The aspects have been copied previously, but they have to be
- -- linked explicitly to the new subprogram declaration.
- -- Explicit pre/postconditions on the instance are analyzed below,
- -- in a separate step.
+ -- linked explicitly to the new subprogram declaration. Explicit
+ -- pre/postconditions on the instance are analyzed below, in a
+ -- separate step.
Move_Aspects (Act_Tree, Act_Decl);
Set_Categorization_From_Pragmas (Act_Decl);
("aspect % requires ''Class for abstract subprogram");
end if;
- -- AI05-0230: the same restriction applies to null procedures.
- -- For compatibility with earlier uses of the Ada pragma, apply
- -- this rule only to aspect specifications.
+ -- AI05-0230: The same restriction applies to null procedures. For
+ -- compatibility with earlier uses of the Ada pragma, apply this
+ -- rule only to aspect specifications.
+
+ -- The above discrpency needs documentation. Robert is dubious
+ -- about whether it is a good idea ???
elsif Nkind (PO) = N_Subprogram_Declaration
and then Nkind (Specification (PO)) = N_Procedure_Specification
elsif not Comes_From_Source (PO) then
- -- The condition may apply to a subprogram instantiation.
+ -- The condition may apply to a subprogram instantiation
if Nkind (PO) = N_Subprogram_Declaration
and then Present (Generic_Parent (Specification (PO)))
Chain_PPC (PO);
return;
+ -- For all other cases of non source code, do nothing
+
else
null;
end if;