Commit 3c24c853 by Matthew Heaney Committed by Arnaud Charlet

a-cohase.ads, [...] (Cursor'Read, [...]): Declare in private part.

2012-01-23  Matthew Heaney  <heaney@adacore.com>

	* a-cohase.ads, a-cihase.ads, a-cbhase.ads, a-coorse.ads,
	a-ciorse.ads, a-cborse.ads, a-cohama.ads, a-cihama.ads, a-cbhama.ads,
	a-coorma.ads, a-ciorma.ads, a-cborma.ads, a-cdlili.ads, a-cidlli.ads,
	a-cbdlli.ads, a-convec.ads, a-coinve.ads, a-cobove.ads (Cursor'Read,
	Cursor'Write): Declare in private part.
	(Reference_Type'Read, Reference_Type'Write): Ditto.
	(Constant_Reference_Type'Read, Constant_Reference_Type'Write): Ditto.

From-SVN: r183418
parent c61b6f0f
2012-01-23 Matthew Heaney <heaney@adacore.com>
* a-cohase.ads, a-cihase.ads, a-cbhase.ads, a-coorse.ads,
a-ciorse.ads, a-cborse.ads, a-cohama.ads, a-cihama.ads, a-cbhama.ads,
a-coorma.ads, a-ciorma.ads, a-cborma.ads, a-cdlili.ads, a-cidlli.ads,
a-cbdlli.ads, a-convec.ads, a-coinve.ads, a-cobove.ads (Cursor'Read,
Cursor'Write): Declare in private part.
(Reference_Type'Read, Reference_Type'Write): Ditto.
(Constant_Reference_Type'Read, Constant_Reference_Type'Write): Ditto.
2012-01-23 Robert Dewar <dewar@adacore.com> 2012-01-23 Robert Dewar <dewar@adacore.com>
* a-catizo.ads, a-calend.adb, a-calend.ads, par-ch13.adb: Minor * a-catizo.ads, a-calend.adb, a-calend.ads, par-ch13.adb: Minor
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,9 +31,10 @@ ...@@ -31,9 +31,10 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Streams;
generic generic
type Element_Type is private; type Element_Type is private;
...@@ -93,35 +94,11 @@ package Ada.Containers.Bounded_Doubly_Linked_Lists is ...@@ -93,35 +94,11 @@ package Ada.Containers.Bounded_Doubly_Linked_Lists is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is private (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased List; (Container : aliased List;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -270,6 +247,8 @@ private ...@@ -270,6 +247,8 @@ private
pragma Inline (Next); pragma Inline (Next);
pragma Inline (Previous); pragma Inline (Previous);
use Ada.Streams;
type Node_Type is record type Node_Type is record
Prev : Count_Type'Base; Prev : Count_Type'Base;
Next : Count_Type; Next : Count_Type;
...@@ -324,9 +303,33 @@ private ...@@ -324,9 +303,33 @@ private
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_List : constant List := (Capacity => 0, others => <>); Empty_List : constant List := (Capacity => 0, others => <>);
No_Element : constant Cursor := Cursor'(null, 0); No_Element : constant Cursor := Cursor'(null, 0);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Containers.Hash_Tables;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables;
private with Ada.Streams;
generic generic
type Key_Type is private; type Key_Type is private;
type Element_Type is private; type Element_Type is private;
...@@ -140,34 +140,10 @@ package Ada.Containers.Bounded_Hashed_Maps is ...@@ -140,34 +140,10 @@ package Ada.Containers.Bounded_Hashed_Maps is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Map; (Container : aliased Map;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -362,6 +338,7 @@ private ...@@ -362,6 +338,7 @@ private
new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record; new HT_Types.Hash_Table_Type (Capacity, Modulus) with null record;
use HT_Types; use HT_Types;
use Ada.Streams;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
...@@ -404,12 +381,36 @@ private ...@@ -404,12 +381,36 @@ private
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
No_Element : constant Cursor := (Container => null, Node => 0); procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_Map : constant Map := Empty_Map : constant Map :=
(Hash_Table_Type with Capacity => 0, Modulus => 0); (Hash_Table_Type with Capacity => 0, Modulus => 0);
No_Element : constant Cursor := (Container => null, Node => 0);
end Ada.Containers.Bounded_Hashed_Maps; end Ada.Containers.Bounded_Hashed_Maps;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables; private with Ada.Containers.Hash_Tables;
private with Ada.Streams; private with Ada.Streams;
...@@ -478,6 +479,18 @@ private ...@@ -478,6 +479,18 @@ private
use HT_Types; use HT_Types;
use Ada.Streams; use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -504,20 +517,6 @@ private ...@@ -504,20 +517,6 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := (Container => null, Node => 0);
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
...@@ -536,4 +535,6 @@ private ...@@ -536,4 +535,6 @@ private
Empty_Set : constant Set := Empty_Set : constant Set :=
(Hash_Table_Type with Capacity => 0, Modulus => 0); (Hash_Table_Type with Capacity => 0, Modulus => 0);
No_Element : constant Cursor := (Container => null, Node => 0);
end Ada.Containers.Bounded_Hashed_Sets; end Ada.Containers.Bounded_Hashed_Sets;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Containers.Red_Black_Trees;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees;
private with Ada.Streams;
generic generic
type Key_Type is private; type Key_Type is private;
type Element_Type is private; type Element_Type is private;
...@@ -102,34 +102,10 @@ package Ada.Containers.Bounded_Ordered_Maps is ...@@ -102,34 +102,10 @@ package Ada.Containers.Bounded_Ordered_Maps is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
function Constant_Reference function Constant_Reference
(Container : aliased Map; (Container : aliased Map;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -269,11 +245,24 @@ private ...@@ -269,11 +245,24 @@ private
type Map (Capacity : Count_Type) is type Map (Capacity : Count_Type) is
new Tree_Types.Tree_Type (Capacity) with null record; new Tree_Types.Tree_Type (Capacity) with null record;
type Map_Access is access all Map;
for Map_Access'Storage_Size use 0;
use Red_Black_Trees; use Red_Black_Trees;
use Tree_Types; use Tree_Types;
use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Map);
for Map'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Map);
for Map'Read use Read;
type Map_Access is access all Map;
for Map_Access'Storage_Size use 0;
type Cursor is record type Cursor is record
Container : Map_Access; Container : Map_Access;
...@@ -292,26 +281,38 @@ private ...@@ -292,26 +281,38 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, 0); type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Item : Constant_Reference_Type);
for Map'Write use Write; for Constant_Reference_Type'Write use Write;
type Reference_Type
(Element : not null access Element_Type) is null record;
procedure Read procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map); Item : out Reference_Type);
for Map'Read use Read; for Reference_Type'Read use Read;
type Constant_Reference_Type procedure Write
(Element : not null access constant Element_Type) is null record; (Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
type Reference_Type for Reference_Type'Write use Write;
(Element : not null access Element_Type) is null record;
Empty_Map : constant Map := Map'(Tree_Type with Capacity => 0); Empty_Map : constant Map := Map'(Tree_Type with Capacity => 0);
No_Element : constant Cursor := Cursor'(null, 0);
end Ada.Containers.Bounded_Ordered_Maps; end Ada.Containers.Bounded_Ordered_Maps;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,10 +31,11 @@ ...@@ -31,10 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Containers.Red_Black_Trees;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees;
private with Ada.Streams;
generic generic
type Element_Type is private; type Element_Type is private;
...@@ -60,6 +61,7 @@ package Ada.Containers.Bounded_Ordered_Sets is ...@@ -60,6 +61,7 @@ package Ada.Containers.Bounded_Ordered_Sets is
Empty_Set : constant Set; Empty_Set : constant Set;
No_Element : constant Cursor; No_Element : constant Cursor;
function Has_Element (Position : Cursor) return Boolean; function Has_Element (Position : Cursor) return Boolean;
package Set_Iterator_Interfaces is new package Set_Iterator_Interfaces is new
...@@ -277,6 +279,8 @@ package Ada.Containers.Bounded_Ordered_Sets is ...@@ -277,6 +279,8 @@ package Ada.Containers.Bounded_Ordered_Sets is
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
use Ada.Streams;
procedure Read procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type); Item : out Reference_Type);
...@@ -310,6 +314,21 @@ private ...@@ -310,6 +314,21 @@ private
type Set (Capacity : Count_Type) is type Set (Capacity : Count_Type) is
new Tree_Types.Tree_Type (Capacity) with null record; new Tree_Types.Tree_Type (Capacity) with null record;
use Tree_Types;
use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -324,8 +343,6 @@ private ...@@ -324,8 +343,6 @@ private
Node : Count_Type := 0; Node : Count_Type := 0;
end record; end record;
use Tree_Types;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
...@@ -338,20 +355,6 @@ private ...@@ -338,20 +355,6 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, 0);
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
...@@ -369,4 +372,6 @@ private ...@@ -369,4 +372,6 @@ private
Empty_Set : constant Set := Set'(Tree_Type with Capacity => 0); Empty_Set : constant Set := Set'(Tree_Type with Capacity => 0);
No_Element : constant Cursor := Cursor'(null, 0);
end Ada.Containers.Bounded_Ordered_Sets; end Ada.Containers.Bounded_Ordered_Sets;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Finalization;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Finalization;
private with Ada.Streams;
generic generic
type Element_Type is private; type Element_Type is private;
...@@ -61,6 +61,7 @@ package Ada.Containers.Doubly_Linked_Lists is ...@@ -61,6 +61,7 @@ package Ada.Containers.Doubly_Linked_Lists is
Empty_List : constant List; Empty_List : constant List;
No_Element : constant Cursor; No_Element : constant Cursor;
function Has_Element (Position : Cursor) return Boolean; function Has_Element (Position : Cursor) return Boolean;
package List_Iterator_Interfaces is new package List_Iterator_Interfaces is new
...@@ -95,35 +96,11 @@ package Ada.Containers.Doubly_Linked_Lists is ...@@ -95,35 +96,11 @@ package Ada.Containers.Doubly_Linked_Lists is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is private (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased List; (Container : aliased List;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -280,6 +257,7 @@ private ...@@ -280,6 +257,7 @@ private
end record; end record;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
type List is type List is
new Controlled with record new Controlled with record
...@@ -330,9 +308,33 @@ private ...@@ -330,9 +308,33 @@ private
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_List : constant List := (Controlled with null, null, 0, 0, 0); Empty_List : constant List := (Controlled with null, null, 0, 0, 0);
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
with Ada.Streams; use Ada.Streams;
private with Ada.Finalization; private with Ada.Finalization;
private with Ada.Streams;
generic generic
type Element_Type (<>) is private; type Element_Type (<>) is private;
...@@ -95,35 +95,11 @@ package Ada.Containers.Indefinite_Doubly_Linked_Lists is ...@@ -95,35 +95,11 @@ package Ada.Containers.Indefinite_Doubly_Linked_Lists is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is private (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased List; (Container : aliased List;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -275,6 +251,7 @@ private ...@@ -275,6 +251,7 @@ private
end record; end record;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
type List is type List is
new Controlled with record new Controlled with record
...@@ -285,12 +262,6 @@ private ...@@ -285,12 +262,6 @@ private
Lock : Natural := 0; Lock : Natural := 0;
end record; end record;
type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
type Reference_Type
(Element : not null access Element_Type) is null record;
overriding procedure Adjust (Container : in out List); overriding procedure Adjust (Container : in out List);
overriding procedure Finalize (Container : in out List) renames Clear; overriding procedure Finalize (Container : in out List) renames Clear;
...@@ -328,6 +299,36 @@ private ...@@ -328,6 +299,36 @@ private
for Cursor'Write use Write; for Cursor'Write use Write;
type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type
(Element : not null access Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_List : constant List := List'(Controlled with null, null, 0, 0, 0); Empty_List : constant List := List'(Controlled with null, null, 0, 0, 0);
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,10 +31,11 @@ ...@@ -31,10 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables; private with Ada.Containers.Hash_Tables;
private with Ada.Finalization; private with Ada.Finalization;
with Ada.Streams; use Ada.Streams; private with Ada.Streams;
with Ada.Iterator_Interfaces;
generic generic
type Key_Type (<>) is private; type Key_Type (<>) is private;
...@@ -139,34 +140,10 @@ package Ada.Containers.Indefinite_Hashed_Maps is ...@@ -139,34 +140,10 @@ package Ada.Containers.Indefinite_Hashed_Maps is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Map; (Container : aliased Map;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -346,11 +323,25 @@ private ...@@ -346,11 +323,25 @@ private
HT : HT_Types.Hash_Table_Type; HT : HT_Types.Hash_Table_Type;
end record; end record;
overriding procedure Adjust (Container : in out Map);
overriding procedure Finalize (Container : in out Map);
use HT_Types; use HT_Types;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
overriding procedure Adjust (Container : in out Map); procedure Write
overriding procedure Finalize (Container : in out Map); (Stream : not null access Root_Stream_Type'Class;
Container : Map);
for Map'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Map);
for Map'Read use Read;
type Map_Access is access all Map; type Map_Access is access all Map;
for Map_Access'Storage_Size use 0; for Map_Access'Storage_Size use 0;
...@@ -366,34 +357,44 @@ private ...@@ -366,34 +357,44 @@ private
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Cursor);
for Cursor'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
type Reference_Type procedure Write
(Element : not null access Element_Type) is null record; (Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Constant_Reference_Type);
for Cursor'Read use Read; for Constant_Reference_Type'Read use Read;
No_Element : constant Cursor := type Reference_Type
(Container => null, (Element : not null access Element_Type) is null record;
Node => null);
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Item : Reference_Type);
for Map'Write use Write; for Reference_Type'Write use Write;
procedure Read procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map); Item : out Reference_Type);
for Map'Read use Read; for Reference_Type'Read use Read;
Empty_Map : constant Map := (Controlled with HT => (null, 0, 0, 0)); Empty_Map : constant Map := (Controlled with HT => (null, 0, 0, 0));
No_Element : constant Cursor := (Container => null, Node => null);
end Ada.Containers.Indefinite_Hashed_Maps; end Ada.Containers.Indefinite_Hashed_Maps;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables; private with Ada.Containers.Hash_Tables;
private with Ada.Streams; private with Ada.Streams;
private with Ada.Finalization; private with Ada.Finalization;
...@@ -474,6 +475,18 @@ private ...@@ -474,6 +475,18 @@ private
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams; use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -494,20 +507,6 @@ private ...@@ -494,20 +507,6 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := (Container => null, Node => null);
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
...@@ -525,4 +524,6 @@ private ...@@ -525,4 +524,6 @@ private
Empty_Set : constant Set := (Controlled with HT => (null, 0, 0, 0)); Empty_Set : constant Set := (Controlled with HT => (null, 0, 0, 0));
No_Element : constant Cursor := (Container => null, Node => null);
end Ada.Containers.Indefinite_Hashed_Sets; end Ada.Containers.Indefinite_Hashed_Sets;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees; private with Ada.Containers.Red_Black_Trees;
private with Ada.Finalization; private with Ada.Finalization;
private with Ada.Streams; private with Ada.Streams;
...@@ -259,6 +260,18 @@ private ...@@ -259,6 +260,18 @@ private
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams; use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Map);
for Map'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Map);
for Map'Read use Read;
type Map_Access is access all Map; type Map_Access is access all Map;
for Map_Access'Storage_Size use 0; for Map_Access'Storage_Size use 0;
...@@ -279,20 +292,6 @@ private ...@@ -279,20 +292,6 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, null);
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Map);
for Map'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Map);
for Map'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
...@@ -331,4 +330,6 @@ private ...@@ -331,4 +330,6 @@ private
Busy => 0, Busy => 0,
Lock => 0)); Lock => 0));
No_Element : constant Cursor := Cursor'(null, null);
end Ada.Containers.Indefinite_Ordered_Maps; end Ada.Containers.Indefinite_Ordered_Maps;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,10 +31,11 @@ ...@@ -31,10 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees; private with Ada.Containers.Red_Black_Trees;
private with Ada.Finalization; private with Ada.Finalization;
with Ada.Streams; use Ada.Streams; private with Ada.Streams;
with Ada.Iterator_Interfaces;
generic generic
type Element_Type (<>) is private; type Element_Type (<>) is private;
...@@ -99,18 +100,6 @@ package Ada.Containers.Indefinite_Ordered_Sets is ...@@ -99,18 +100,6 @@ package Ada.Containers.Indefinite_Ordered_Sets is
(Container : aliased Set; (Container : aliased Set;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Assign (Target : in out Set; Source : Set); procedure Assign (Target : in out Set; Source : Set);
function Copy (Source : Set) return Set; function Copy (Source : Set) return Set;
...@@ -306,6 +295,8 @@ package Ada.Containers.Indefinite_Ordered_Sets is ...@@ -306,6 +295,8 @@ package Ada.Containers.Indefinite_Ordered_Sets is
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
use Ada.Streams;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type); Item : Reference_Type);
...@@ -351,6 +342,19 @@ private ...@@ -351,6 +342,19 @@ private
use Red_Black_Trees; use Red_Black_Trees;
use Tree_Types; use Tree_Types;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -372,22 +376,20 @@ private ...@@ -372,22 +376,20 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, null); type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Write procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Item : out Constant_Reference_Type);
for Set'Write use Write; for Constant_Reference_Type'Read use Read;
procedure Read procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Item : Constant_Reference_Type);
for Set'Read use Read;
type Constant_Reference_Type for Constant_Reference_Type'Write use Write;
(Element : not null access constant Element_Type) is null record;
Empty_Set : constant Set := Empty_Set : constant Set :=
(Controlled with Tree => (First => null, (Controlled with Tree => (First => null,
...@@ -397,4 +399,6 @@ private ...@@ -397,4 +399,6 @@ private
Busy => 0, Busy => 0,
Lock => 0)); Lock => 0));
No_Element : constant Cursor := Cursor'(null, null);
end Ada.Containers.Indefinite_Ordered_Sets; end Ada.Containers.Indefinite_Ordered_Sets;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,9 +31,10 @@ ...@@ -31,9 +31,10 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Streams;
generic generic
type Index_Type is range <>; type Index_Type is range <>;
type Element_Type is private; type Element_Type is private;
...@@ -64,6 +65,7 @@ package Ada.Containers.Bounded_Vectors is ...@@ -64,6 +65,7 @@ package Ada.Containers.Bounded_Vectors is
Empty_Vector : constant Vector; Empty_Vector : constant Vector;
No_Element : constant Cursor; No_Element : constant Cursor;
function Has_Element (Position : Cursor) return Boolean; function Has_Element (Position : Cursor) return Boolean;
package Vector_Iterator_Interfaces is new package Vector_Iterator_Interfaces is new
...@@ -148,34 +150,10 @@ package Ada.Containers.Bounded_Vectors is ...@@ -148,34 +150,10 @@ package Ada.Containers.Bounded_Vectors is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
function Constant_Reference function Constant_Reference
(Container : aliased Vector; (Container : aliased Vector;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -385,6 +363,8 @@ private ...@@ -385,6 +363,8 @@ private
pragma Inline (Next); pragma Inline (Next);
pragma Inline (Previous); pragma Inline (Previous);
use Ada.Streams;
type Elements_Array is array (Count_Type range <>) of aliased Element_Type; type Elements_Array is array (Count_Type range <>) of aliased Element_Type;
function "=" (L, R : Elements_Array) return Boolean is abstract; function "=" (L, R : Elements_Array) return Boolean is abstract;
...@@ -430,9 +410,33 @@ private ...@@ -430,9 +410,33 @@ private
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
Empty_Vector : constant Vector := (Capacity => 0, others => <>); Empty_Vector : constant Vector := (Capacity => 0, others => <>);
No_Element : constant Cursor := Cursor'(null, Index_Type'First); No_Element : constant Cursor := Cursor'(null, Index_Type'First);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables; private with Ada.Containers.Hash_Tables;
private with Ada.Finalization; private with Ada.Finalization;
private with Ada.Streams;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces;
generic generic
type Key_Type is private; type Key_Type is private;
...@@ -61,18 +61,6 @@ package Ada.Containers.Hashed_Maps is ...@@ -61,18 +61,6 @@ package Ada.Containers.Hashed_Maps is
type Cursor is private; type Cursor is private;
pragma Preelaborable_Initialization (Cursor); pragma Preelaborable_Initialization (Cursor);
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Cursor);
for Cursor'Write use Write;
Empty_Map : constant Map; Empty_Map : constant Map;
-- Map objects declared without an initialization expression are -- Map objects declared without an initialization expression are
-- initialized to the value Empty_Map. -- initialized to the value Empty_Map.
...@@ -153,34 +141,10 @@ package Ada.Containers.Hashed_Maps is ...@@ -153,34 +141,10 @@ package Ada.Containers.Hashed_Maps is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Map; (Container : aliased Map;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -365,13 +329,14 @@ private ...@@ -365,13 +329,14 @@ private
HT : HT_Types.Hash_Table_Type; HT : HT_Types.Hash_Table_Type;
end record; end record;
use HT_Types;
use Ada.Finalization;
overriding procedure Adjust (Container : in out Map); overriding procedure Adjust (Container : in out Map);
overriding procedure Finalize (Container : in out Map); overriding procedure Finalize (Container : in out Map);
use HT_Types;
use Ada.Finalization;
use Ada.Streams;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Container : Map);
...@@ -392,12 +357,48 @@ private ...@@ -392,12 +357,48 @@ private
Node : Node_Access; Node : Node_Access;
end record; end record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Cursor);
for Cursor'Write use Write;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_Map : constant Map := (Controlled with HT => (null, 0, 0, 0)); Empty_Map : constant Map := (Controlled with HT => (null, 0, 0, 0));
No_Element : constant Cursor := (Container => null, Node => null); No_Element : constant Cursor := (Container => null, Node => null);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Containers.Hash_Tables; private with Ada.Containers.Hash_Tables;
private with Ada.Streams; private with Ada.Streams;
private with Ada.Finalization; private with Ada.Finalization;
...@@ -476,6 +477,18 @@ private ...@@ -476,6 +477,18 @@ private
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams; use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -496,20 +509,6 @@ private ...@@ -496,20 +509,6 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := (Container => null, Node => null);
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
...@@ -527,4 +526,6 @@ private ...@@ -527,4 +526,6 @@ private
Empty_Set : constant Set := (Controlled with HT => (null, 0, 0, 0)); Empty_Set : constant Set := (Controlled with HT => (null, 0, 0, 0));
No_Element : constant Cursor := (Container => null, Node => null);
end Ada.Containers.Hashed_Sets; end Ada.Containers.Hashed_Sets;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Finalization;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Finalization;
private with Ada.Streams;
generic generic
type Index_Type is range <>; type Index_Type is range <>;
type Element_Type (<>) is private; type Element_Type (<>) is private;
...@@ -67,19 +67,8 @@ package Ada.Containers.Indefinite_Vectors is ...@@ -67,19 +67,8 @@ package Ada.Containers.Indefinite_Vectors is
Empty_Vector : constant Vector; Empty_Vector : constant Vector;
No_Element : constant Cursor; No_Element : constant Cursor;
function Has_Element (Position : Cursor) return Boolean;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Position : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Position : Cursor);
for Cursor'Write use Write; function Has_Element (Position : Cursor) return Boolean;
package Vector_Iterator_Interfaces is new package Vector_Iterator_Interfaces is new
Ada.Iterator_Interfaces (Cursor, Has_Element); Ada.Iterator_Interfaces (Cursor, Has_Element);
...@@ -121,34 +110,10 @@ package Ada.Containers.Indefinite_Vectors is ...@@ -121,34 +110,10 @@ package Ada.Containers.Indefinite_Vectors is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Vector; (Container : aliased Vector;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -397,25 +362,20 @@ private ...@@ -397,25 +362,20 @@ private
type Elements_Access is access Elements_Type; type Elements_Access is access Elements_Type;
use Ada.Finalization; type Vector is new Ada.Finalization.Controlled with record
type Vector is new Controlled with record
Elements : Elements_Access; Elements : Elements_Access;
Last : Extended_Index := No_Index; Last : Extended_Index := No_Index;
Busy : Natural := 0; Busy : Natural := 0;
Lock : Natural := 0; Lock : Natural := 0;
end record; end record;
type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
type Reference_Type
(Element : not null access Element_Type) is null record;
overriding procedure Adjust (Container : in out Vector); overriding procedure Adjust (Container : in out Vector);
overriding procedure Finalize (Container : in out Vector); overriding procedure Finalize (Container : in out Vector);
use Ada.Finalization;
use Ada.Streams;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Vector); Container : Vector);
...@@ -436,6 +396,48 @@ private ...@@ -436,6 +396,48 @@ private
Index : Index_Type := Index_Type'First; Index : Index_Type := Index_Type'First;
end record; end record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Position : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Position : Cursor);
for Cursor'Write use Write;
type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type
(Element : not null access Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
Empty_Vector : constant Vector := (Controlled with null, No_Index, 0, 0); Empty_Vector : constant Vector := (Controlled with null, No_Index, 0, 0);
No_Element : constant Cursor := Cursor'(null, Index_Type'First); No_Element : constant Cursor := Cursor'(null, Index_Type'First);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,9 +31,11 @@ ...@@ -31,9 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
private with Ada.Finalization;
with Ada.Streams;
with Ada.Iterator_Interfaces; with Ada.Iterator_Interfaces;
private with Ada.Finalization;
private with Ada.Streams;
generic generic
type Index_Type is range <>; type Index_Type is range <>;
type Element_Type is private; type Element_Type is private;
...@@ -43,7 +45,6 @@ generic ...@@ -43,7 +45,6 @@ generic
package Ada.Containers.Vectors is package Ada.Containers.Vectors is
pragma Preelaborate; pragma Preelaborate;
pragma Remote_Types; pragma Remote_Types;
use Ada.Streams;
subtype Extended_Index is Index_Type'Base subtype Extended_Index is Index_Type'Base
range Index_Type'First - 1 .. range Index_Type'First - 1 ..
...@@ -61,21 +62,11 @@ package Ada.Containers.Vectors is ...@@ -61,21 +62,11 @@ package Ada.Containers.Vectors is
type Cursor is private; type Cursor is private;
pragma Preelaborable_Initialization (Cursor); pragma Preelaborable_Initialization (Cursor);
No_Element : constant Cursor; No_Element : constant Cursor;
function Has_Element (Position : Cursor) return Boolean; function Has_Element (Position : Cursor) return Boolean;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Position : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Position : Cursor);
for Cursor'Write use Write;
package Vector_Iterator_Interfaces is new package Vector_Iterator_Interfaces is new
Ada.Iterator_Interfaces (Cursor, Has_Element); Ada.Iterator_Interfaces (Cursor, Has_Element);
...@@ -160,34 +151,10 @@ package Ada.Containers.Vectors is ...@@ -160,34 +151,10 @@ package Ada.Containers.Vectors is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type (Element : not null access Element_Type) is private type Reference_Type (Element : not null access Element_Type) is private
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Vector; (Container : aliased Vector;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
...@@ -404,6 +371,7 @@ private ...@@ -404,6 +371,7 @@ private
type Elements_Access is access Elements_Type; type Elements_Access is access Elements_Type;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
type Vector is new Controlled with record type Vector is new Controlled with record
Elements : Elements_Access; Elements : Elements_Access;
...@@ -412,13 +380,9 @@ private ...@@ -412,13 +380,9 @@ private
Lock : Natural := 0; Lock : Natural := 0;
end record; end record;
type Vector_Access is access all Vector; overriding procedure Adjust (Container : in out Vector);
for Vector_Access'Storage_Size use 0;
type Cursor is record overriding procedure Finalize (Container : in out Vector);
Container : Vector_Access;
Index : Index_Type := Index_Type'First;
end record;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
...@@ -432,17 +396,58 @@ private ...@@ -432,17 +396,58 @@ private
for Vector'Read use Read; for Vector'Read use Read;
type Vector_Access is access all Vector;
for Vector_Access'Storage_Size use 0;
type Cursor is record
Container : Vector_Access;
Index : Index_Type := Index_Type'First;
end record;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Position : out Cursor);
for Cursor'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Position : Cursor);
for Cursor'Write use Write;
type Constant_Reference_Type type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record; (Element : not null access constant Element_Type) is null record;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
overriding procedure Adjust (Container : in out Vector); procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type);
overriding procedure Finalize (Container : in out Vector); for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Reference_Type);
for Reference_Type'Read use Read;
No_Element : constant Cursor := Cursor'(null, Index_Type'First); No_Element : constant Cursor := Cursor'(null, Index_Type'First);
Empty_Vector : constant Vector := (Controlled with null, No_Index, 0, 0); Empty_Vector : constant Vector := (Controlled with null, No_Index, 0, 0);
end Ada.Containers.Vectors; end Ada.Containers.Vectors;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees; private with Ada.Containers.Red_Black_Trees;
private with Ada.Finalization; private with Ada.Finalization;
private with Ada.Streams;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces;
generic generic
type Key_Type is private; type Key_Type is private;
...@@ -259,6 +259,19 @@ private ...@@ -259,6 +259,19 @@ private
use Red_Black_Trees; use Red_Black_Trees;
use Tree_Types; use Tree_Types;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Map);
for Map'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Map);
for Map'Read use Read;
type Map_Access is access all Map; type Map_Access is access all Map;
for Map_Access'Storage_Size use 0; for Map_Access'Storage_Size use 0;
...@@ -280,22 +293,20 @@ private ...@@ -280,22 +293,20 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, null); type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Write procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Item : out Constant_Reference_Type);
for Map'Write use Write; for Constant_Reference_Type'Read use Read;
procedure Read procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map); Item : Constant_Reference_Type);
for Map'Read use Read;
type Constant_Reference_Type for Constant_Reference_Type'Write use Write;
(Element : not null access constant Element_Type) is null record;
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
...@@ -312,18 +323,6 @@ private ...@@ -312,18 +323,6 @@ private
for Reference_Type'Write use Write; for Reference_Type'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
Empty_Map : constant Map := Empty_Map : constant Map :=
(Controlled with Tree => (First => null, (Controlled with Tree => (First => null,
Last => null, Last => null,
...@@ -331,4 +330,7 @@ private ...@@ -331,4 +330,7 @@ private
Length => 0, Length => 0,
Busy => 0, Busy => 0,
Lock => 0)); Lock => 0));
No_Element : constant Cursor := Cursor'(null, null);
end Ada.Containers.Ordered_Maps; end Ada.Containers.Ordered_Maps;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2004-2011, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2012, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
with Ada.Iterator_Interfaces;
private with Ada.Containers.Red_Black_Trees; private with Ada.Containers.Red_Black_Trees;
private with Ada.Finalization; private with Ada.Finalization;
private with Ada.Streams;
with Ada.Streams; use Ada.Streams;
with Ada.Iterator_Interfaces;
generic generic
type Element_Type is private; type Element_Type is private;
...@@ -97,22 +97,10 @@ package Ada.Containers.Ordered_Sets is ...@@ -97,22 +97,10 @@ package Ada.Containers.Ordered_Sets is
with with
Implicit_Dereference => Element; Implicit_Dereference => Element;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Item : Constant_Reference_Type);
for Constant_Reference_Type'Write use Write;
function Constant_Reference function Constant_Reference
(Container : aliased Set; (Container : aliased Set;
Position : Cursor) return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Item : out Constant_Reference_Type);
for Constant_Reference_Type'Read use Read;
procedure Assign (Target : in out Set; Source : Set); procedure Assign (Target : in out Set; Source : Set);
function Copy (Source : Set) return Set; function Copy (Source : Set) return Set;
...@@ -292,6 +280,8 @@ package Ada.Containers.Ordered_Sets is ...@@ -292,6 +280,8 @@ package Ada.Containers.Ordered_Sets is
type Reference_Type type Reference_Type
(Element : not null access Element_Type) is null record; (Element : not null access Element_Type) is null record;
use Ada.Streams;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Reference_Type); Item : Reference_Type);
...@@ -335,6 +325,19 @@ private ...@@ -335,6 +325,19 @@ private
use Red_Black_Trees; use Red_Black_Trees;
use Tree_Types; use Tree_Types;
use Ada.Finalization; use Ada.Finalization;
use Ada.Streams;
procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write;
procedure Read
(Stream : not null access Root_Stream_Type'Class;
Container : out Set);
for Set'Read use Read;
type Set_Access is access all Set; type Set_Access is access all Set;
for Set_Access'Storage_Size use 0; for Set_Access'Storage_Size use 0;
...@@ -356,22 +359,20 @@ private ...@@ -356,22 +359,20 @@ private
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, null); type Constant_Reference_Type
(Element : not null access constant Element_Type) is null record;
procedure Write procedure Write
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Item : Constant_Reference_Type);
for Set'Write use Write; for Constant_Reference_Type'Write use Write;
procedure Read procedure Read
(Stream : not null access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Item : out Constant_Reference_Type);
for Set'Read use Read;
type Constant_Reference_Type for Constant_Reference_Type'Read use Read;
(Element : not null access constant Element_Type) is null record;
Empty_Set : constant Set := Empty_Set : constant Set :=
(Controlled with Tree => (First => null, (Controlled with Tree => (First => null,
...@@ -381,4 +382,6 @@ private ...@@ -381,4 +382,6 @@ private
Busy => 0, Busy => 0,
Lock => 0)); Lock => 0));
No_Element : constant Cursor := Cursor'(null, null);
end Ada.Containers.Ordered_Sets; end Ada.Containers.Ordered_Sets;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment