s-finroo.ads, [...] (Read, Write): Use null procedure declarations instead of an explicit null body, for conciseness.

2007-04-20  Thomas Quinot  <quinot@adacore.com>

	* s-finroo.ads, s-finroo.adb (Read, Write): Use null procedure
	declarations instead of an explicit null body, for conciseness.

From-SVN: r125459
This commit is contained in:
Thomas Quinot 2007-06-06 12:46:39 +02:00 committed by Arnaud Charlet
parent 72fb810db9
commit 79e448454b
2 changed files with 25 additions and 46 deletions

View File

@ -62,38 +62,4 @@ package body System.Finalization_Root is
raise Program_Error;
end Initialize;
----------
-- Read --
----------
-- Read and Write must be empty in order to avoid copying the
-- finalization pointers.
pragma Warnings (Off);
-- Suppress warning for out paramater Item which is not assigned
-- because it is pretty much empty.
procedure Read
(Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out Root_Controlled)
is
begin
null;
end Read;
-----------
-- Write --
-----------
-- Read and Write must be empty in order to avoid copying the
-- finalization pointers.
procedure Write
(Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : Root_Controlled)
is
begin
null;
end Write;
end System.Finalization_Root;

View File

@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
-- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2007, 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- --
@ -34,7 +34,7 @@
-- This unit provides the basic support for controlled (finalizable) types
with Ada.Streams;
with Unchecked_Conversion;
with Ada.Unchecked_Conversion;
package System.Finalization_Root is
pragma Preelaborate;
@ -44,10 +44,10 @@ package System.Finalization_Root is
type Finalizable_Ptr is access all Root_Controlled'Class;
function To_Finalizable_Ptr is
new Unchecked_Conversion (Address, Finalizable_Ptr);
new Ada.Unchecked_Conversion (Address, Finalizable_Ptr);
function To_Addr is
new Unchecked_Conversion (Finalizable_Ptr, Address);
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)
@ -61,14 +61,27 @@ package System.Finalization_Root is
procedure Finalize (Object : in out Root_Controlled);
procedure Adjust (Object : in out Root_Controlled);
procedure Write
(Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : Root_Controlled);
-- Stream-oriented attibutes 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 Read
(Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : 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;
end Stream_Attributes;
for Root_Controlled'Read use Stream_Attributes.Read;
for Root_Controlled'Write use Stream_Attributes.Write;
for Root_Controlled'Read use Read;
for Root_Controlled'Write use Write;
end System.Finalization_Root;