diff options
Diffstat (limited to 'gcc/ada/s-finroo.ads')
-rw-r--r-- | gcc/ada/s-finroo.ads | 45 |
1 files changed, 10 insertions, 35 deletions
diff --git a/gcc/ada/s-finroo.ads b/gcc/ada/s-finroo.ads index da373f7c34c..4de2b7c0375 100644 --- a/gcc/ada/s-finroo.ads +++ b/gcc/ada/s-finroo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-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- -- @@ -32,54 +32,29 @@ -- This unit provides the basic support for controlled (finalizable) types with Ada.Streams; -with Ada.Unchecked_Conversion; package System.Finalization_Root is pragma Preelaborate; - type Root_Controlled is tagged; + -- The base for types Controlled and Limited_Controlled declared in Ada. + -- Finalization. - type Finalizable_Ptr is access all Root_Controlled'Class; + type Root_Controlled is tagged null record; - function To_Finalizable_Ptr is - new Ada.Unchecked_Conversion (Address, Finalizable_Ptr); - - function To_Addr is - new Ada.Unchecked_Conversion (Finalizable_Ptr, Address); - - type Empty_Root_Controlled is abstract tagged null record; - -- Just for the sake of Controlled equality (see Ada.Finalization) - - type Root_Controlled is new Empty_Root_Controlled with record - Prev, Next : Finalizable_Ptr; - end record; - subtype Finalizable is Root_Controlled'Class; - - procedure Initialize (Object : in out Root_Controlled); - procedure Finalize (Object : in out Root_Controlled); procedure Adjust (Object : in out Root_Controlled); - - -- Stream-oriented attributes for Root_Controlled. These must be empty so - -- as to not copy the finalization chain pointers. They are declared in - -- a nested package so that they do not create primitive operations of - -- Root_Controlled. Otherwise this would add unwanted primitives to (the - -- full view of) Ada.Finalization.Limited_Controlled, which would cause - -- trouble in cases where a limited controlled type is used as the - -- designated type of a remote access-to-classwide type. + procedure Finalize (Object : in out Root_Controlled); + procedure Initialize (Object : in out Root_Controlled); package Stream_Attributes is - - procedure Write - (Stream : not null access Ada.Streams.Root_Stream_Type'Class; - Item : Root_Controlled) is null; - procedure Read (Stream : not null access Ada.Streams.Root_Stream_Type'Class; Item : out Root_Controlled) is null; + procedure Write + (Stream : not null access Ada.Streams.Root_Stream_Type'Class; + Item : Root_Controlled) is null; end Stream_Attributes; - for Root_Controlled'Read use Stream_Attributes.Read; + for Root_Controlled'Read use Stream_Attributes.Read; for Root_Controlled'Write use Stream_Attributes.Write; - end System.Finalization_Root; |