diff options
Diffstat (limited to 'gcc-4.7/gcc/ada/s-finmas.ads')
-rw-r--r-- | gcc-4.7/gcc/ada/s-finmas.ads | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/gcc-4.7/gcc/ada/s-finmas.ads b/gcc-4.7/gcc/ada/s-finmas.ads deleted file mode 100644 index f0dd5b876..000000000 --- a/gcc-4.7/gcc/ada/s-finmas.ads +++ /dev/null @@ -1,209 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT COMPILER COMPONENTS -- --- -- --- S Y S T E M . F I N A L I Z A T I O N _ M A S T E R S -- --- -- --- S p e c -- --- -- --- Copyright (C) 2011, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - -with Ada.Finalization; -with System.Storage_Elements; -with System.Storage_Pools; - -pragma Compiler_Unit; - -package System.Finalization_Masters is - pragma Preelaborate; - - -- A reference to primitive Finalize_Address. The expander generates an - -- implementation of this procedure for each controlled and class-wide - -- type. Since controlled objects are simply viewed as addresses once - -- allocated through a master, Finalize_Address provides a backward - -- indirection from an address to a type-specific context. - - type Finalize_Address_Ptr is access procedure (Obj : System.Address); - - -- Heterogeneous collection type structure - - type FM_Node is private; - type FM_Node_Ptr is access all FM_Node; - pragma No_Strict_Aliasing (FM_Node_Ptr); - - -- A reference to any derivation from Root_Storage_Pool. Since this type - -- may not be used to allocate objects, its storage size is zero. - - type Any_Storage_Pool_Ptr is - access System.Storage_Pools.Root_Storage_Pool'Class; - for Any_Storage_Pool_Ptr'Storage_Size use 0; - - -- Finalization master type structure. A unique master is associated with - -- each access-to-controlled or access-to-class-wide type. Masters also act - -- as components of subpools. By default, a master contains objects of the - -- same designated type but it may also accomodate heterogeneous objects. - - type Finalization_Master is - new Ada.Finalization.Limited_Controlled with private; - - -- A reference to a finalization master. Since this type may not be used - -- to allocate objects, its storage size is zero. - - type Finalization_Master_Ptr is access all Finalization_Master; - for Finalization_Master_Ptr'Storage_Size use 0; - - procedure Attach (N : not null FM_Node_Ptr; L : not null FM_Node_Ptr); - -- Compiler interface, do not call from withing the run-time. Prepend a - -- node to a specific finalization master. - - procedure Attach_Unprotected - (N : not null FM_Node_Ptr; - L : not null FM_Node_Ptr); - -- Prepend a node to a specific finalization master - - procedure Delete_Finalize_Address_Unprotected (Obj : System.Address); - -- Destroy the relation pair object - Finalize_Address from the internal - -- hash table. - - procedure Detach (N : not null FM_Node_Ptr); - -- Compiler interface, do not call from within the run-time. Remove a node - -- from an arbitrary finalization master. - - procedure Detach_Unprotected (N : not null FM_Node_Ptr); - -- Remove a node from an arbitrary finalization master - - overriding procedure Finalize (Master : in out Finalization_Master); - -- Lock the master to prevent allocations during finalization. Iterate over - -- the list of allocated controlled objects, finalizing each one by calling - -- its specific Finalize_Address. In the end, deallocate the dummy head. - - function Finalize_Address - (Master : Finalization_Master) return Finalize_Address_Ptr; - -- Return a reference to the TSS primitive Finalize_Address associated with - -- a master. - - function Finalize_Address_Unprotected - (Obj : System.Address) return Finalize_Address_Ptr; - -- Retrieve the Finalize_Address primitive associated with a particular - -- object. - - function Finalization_Started (Master : Finalization_Master) return Boolean; - -- Return the finalization status of a master - - function Header_Offset return System.Storage_Elements.Storage_Offset; - -- Return the size of type FM_Node as Storage_Offset - - function Header_Size return System.Storage_Elements.Storage_Count; - -- Return the size of type FM_Node as Storage_Count - - function Is_Homogeneous (Master : Finalization_Master) return Boolean; - -- Return the behavior flag of a master - - function Objects (Master : Finalization_Master) return FM_Node_Ptr; - -- Return the header of the doubly-linked list of controlled objects - - procedure Print_Master (Master : Finalization_Master); - -- Debug routine, outputs the contents of a master - - procedure Set_Finalize_Address - (Master : in out Finalization_Master; - Fin_Addr_Ptr : Finalize_Address_Ptr); - -- Compiler interface, do not call from within the run-time. Set the clean - -- up routine of a finalization master - - procedure Set_Finalize_Address_Unprotected - (Master : in out Finalization_Master; - Fin_Addr_Ptr : Finalize_Address_Ptr); - -- Set the clean up routine of a finalization master - - procedure Set_Heterogeneous_Finalize_Address_Unprotected - (Obj : System.Address; - Fin_Addr_Ptr : Finalize_Address_Ptr); - -- Add a relation pair object - Finalize_Address to the internal hash - -- table. This is done in the context of allocation on a heterogeneous - -- finalization master where a single master services multiple anonymous - -- access-to-controlled types. - - procedure Set_Is_Heterogeneous (Master : in out Finalization_Master); - -- Mark the master as being a heterogeneous collection of objects - -private - -- Heterogeneous collection type structure - - type FM_Node is record - Prev : FM_Node_Ptr := null; - Next : FM_Node_Ptr := null; - end record; - - -- Finalization master type structure. A unique master is associated with - -- each access-to-controlled or access-to-class-wide type. Masters also act - -- as components of subpools. By default, a master contains objects of the - -- same designated type but it may also accomodate heterogeneous objects. - - type Finalization_Master is - new Ada.Finalization.Limited_Controlled with - record - Is_Homogeneous : Boolean := True; - -- A flag which controls the behavior of the master. A value of False - -- denotes a heterogeneous collection. - - Base_Pool : Any_Storage_Pool_Ptr := null; - -- A reference to the pool which this finalization master services. This - -- field is used in conjunction with the build-in-place machinery. - - Objects : aliased FM_Node; - -- A doubly linked list which contains the headers of all controlled - -- objects allocated in a [sub]pool. - - Finalize_Address : Finalize_Address_Ptr := null; - -- A reference to the routine reponsible for object finalization. This - -- is used only when the master is in homogeneous mode. - - Finalization_Started : Boolean := False; - -- A flag used to detect allocations which occur during the finalization - -- of a master. The allocations must raise Program_Error. This scenario - -- may arise in a multitask environment. - end record; - - -- Since RTSfind cannot contain names of the form RE_"+", the following - -- routine serves as a wrapper around System.Storage_Elements."+". - - function Add_Offset_To_Address - (Addr : System.Address; - Offset : System.Storage_Elements.Storage_Offset) return System.Address; - - function Base_Pool - (Master : Finalization_Master) return Any_Storage_Pool_Ptr; - -- Return a reference to the underlying storage pool on which the master - -- operates. - - overriding procedure Initialize (Master : in out Finalization_Master); - -- Initialize the dummy head of a finalization master - - procedure Set_Base_Pool - (Master : in out Finalization_Master; - Pool_Ptr : Any_Storage_Pool_Ptr); - -- Set the underlying pool of a finalization master - -end System.Finalization_Masters; |