Commit d90e94c7 by Javier Miranda Committed by Arnaud Charlet

a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,…

a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads, a-cgarso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads, a-chtgke.ads, a-chtgke.ads, a-coprnu.ads, a-contai.ads, a-chtgke.ads, a-chtgke.adb, a-stwiha.ads, a-strhas.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads, a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads, a-stzfix.ads, a-stzhas.ads, a-szuzha.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoio.ads, a-ztinio.ads, a-zttest.ads, a-zzunio.ads, a-astaco.ads, a-charac.ads, a-chlat1.ads, ada.ads, a-dynpri.ads, a-flteio.ads, a-fwteio.ads, a-inteio.ads, a-intnam.ads, a-ioexce.ads, a-iwteio.ads, a-lfteio.ads, a-lfwtio.ads, a-liteio.ads, a-liwtio.ads, a-llftio.ads, a-llfwti.ads, a-llitio.ads, a-lliwti.ads, a-ncelfu.ads, a-ngcefu.ads, a-ngelfu.ads, a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads, a-nllcty.ads, a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads, a-nucoty.ads, a-nuelfu.ads, a-numeri.ads, a-sfteio.ads, a-sfwtio.ads, a-siteio.ads, a-siwtio.ads, a-ssitio.ads, a-ssiwti.ads, a-storio.ads, a-strfix.ads, a-string.ads, a-stwifi.ads, a-titest.ads, a-unccon.ads, a-uncdea.ads, a-wtcoio.ads, a-wtinio.ads, a-wttest.ads, calendar.ads, directio.ads, i-c.ads, ioexcept.ads, machcode.ads, sequenio.ads, text_io.ads, unchconv.ads, unchdeal.ads, a-widcha.ads, a-zchara.ads, a-stboha.ads, a-stfiha.ads, a-coteio.ads, a-envvar.ads, a-lcteio.ads, a-llctio.ads, a-scteio.ads, a-swbwha.ads, a-swfwha.ads, a-szbzha.ads, a-szfzha.ads, a-tiboio.ads, a-wwboio.ads, a-zzboio.ads, a-dispat.ads, a-tgdico.ads, expander.adb, g-socket.ads, par-labl.adb, sinput-c.adb, s-tarest.ads, s-stchop.ads, g-expect-vms.adb, s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb, s-taprop-hpux-dce.adb, s-traceb-hpux.adb, s-taprop-linux.adb, s-taprop-dummy.adb, s-osprim-unix.adb, s-osprim-solaris.adb, s-taprop-solaris.adb, s-taprop-vms.adb, s-osprim-mingw.adb, s-taprop-mingw.adb, s-osprim-posix.adb, s-taprop-posix.adb, a-exexpr-gcc.adb, a-ststio.adb, a-ststio.ads, a-textio.adb, a-textio.ads, a-tideau.adb, a-tideau.ads, a-witeio.adb, a-witeio.ads, a-wtdeau.adb, a-wtdeau.ads, g-calend.adb, g-calend.ads, g-dirope.adb, g-expect.ads, gnatchop.adb, g-spipat.adb, g-spipat.ads, s-direio.adb, s-direio.ads, s-fatgen.adb, s-fatgen.ads, s-parint.adb, s-sequio.adb, s-sequio.ads, s-taprop.ads, s-valdec.adb, s-valdec.ads, s-valint.adb, s-valint.ads, s-vallld.adb, s-vallld.ads, s-vallli.adb, s-vallli.ads, s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads, s-valuns.adb, s-valuns.ads, s-valuti.adb, s-valuti.ads, xref_lib.adb, s-stchop.adb, i-vxwork-x86.ads, a-crbtgo.ads, a-crbtgo.adb, a-coorse.ads, a-coorse.adb, a-cohama.ads, a-cohama.adb, a-ciorse.ads, a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-chtgop.ads, a-chtgop.ads, a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cihase.ads, a-cohase.adb, a-cohase.ads, a-swuwha.ads, a-ciormu.ads, a-coormu.ads, a-rbtgso.ads, a-stunha.ads, a-ciorma.adb, a-coorma.adb, a-ztdeau.adb, a-ztdeau.ads, a-ztexio.adb, a-ztexio.ads...

2007-04-06  Javier Miranda  <miranda@adacore.com>
	    Matt Heaney  <heaney@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
	a-cgarso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads, a-chtgke.ads,
	a-chtgke.ads, a-coprnu.ads, a-contai.ads, a-chtgke.ads, a-chtgke.adb,
	a-stwiha.ads, a-strhas.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads,
	a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads, a-stzfix.ads,
	a-stzhas.ads, a-szuzha.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoio.ads,
	a-ztinio.ads, a-zttest.ads, a-zzunio.ads, a-astaco.ads, a-charac.ads,
	a-chlat1.ads, ada.ads, a-dynpri.ads, a-flteio.ads, a-fwteio.ads,
	a-inteio.ads, a-intnam.ads, a-ioexce.ads, a-iwteio.ads, a-lfteio.ads,
	a-lfwtio.ads, a-liteio.ads, a-liwtio.ads, a-llftio.ads, a-llfwti.ads,
	a-llitio.ads, a-lliwti.ads, a-ncelfu.ads, a-ngcefu.ads, a-ngelfu.ads,
	a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads, a-nllcty.ads,
	a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads, a-nucoty.ads,
	a-nuelfu.ads, a-numeri.ads, a-sfteio.ads, a-sfwtio.ads, a-siteio.ads,
	a-siwtio.ads, a-ssitio.ads, a-ssiwti.ads, a-storio.ads, a-strfix.ads,
	a-string.ads, a-stwifi.ads, a-titest.ads, a-unccon.ads, a-uncdea.ads,
	a-wtcoio.ads, a-wtinio.ads, a-wttest.ads, calendar.ads, directio.ads,
	i-c.ads, ioexcept.ads, machcode.ads, sequenio.ads, text_io.ads,
	unchconv.ads, unchdeal.ads, a-widcha.ads, a-zchara.ads, a-stboha.ads,
	a-stfiha.ads, a-coteio.ads, a-envvar.ads, a-lcteio.ads, a-llctio.ads,
	a-scteio.ads, a-swbwha.ads, a-swfwha.ads, a-szbzha.ads, a-szfzha.ads,
	a-tiboio.ads, a-wwboio.ads, a-zzboio.ads, a-dispat.ads, a-tgdico.ads,
	expander.adb, g-socket.ads, par-labl.adb, sinput-c.adb, s-tarest.ads,
	s-stchop.ads, g-expect-vms.adb, s-taprop-lynxos.adb,
	s-taprop-tru64.adb, s-taprop-irix.adb,
	s-taprop-hpux-dce.adb, s-traceb-hpux.adb,
	s-taprop-linux.adb, s-taprop-dummy.adb, s-osprim-unix.adb,
	s-osprim-solaris.adb, s-taprop-solaris.adb, s-taprop-vms.adb,
	s-osprim-mingw.adb, s-taprop-mingw.adb, s-osprim-posix.adb, 
	s-taprop-posix.adb, a-exexpr-gcc.adb, a-ststio.adb, a-ststio.ads, 
	a-textio.adb, a-textio.ads, a-tideau.adb, a-tideau.ads, a-witeio.adb, 
	a-witeio.ads, a-wtdeau.adb, a-wtdeau.ads, g-calend.adb, g-calend.ads, 
	g-dirope.adb, g-expect.ads, gnatchop.adb, g-spipat.adb, g-spipat.ads, 
	s-direio.adb, s-direio.ads, s-fatgen.adb, s-fatgen.ads, s-parint.adb, 
	s-sequio.adb, s-sequio.ads, s-taprop.ads, s-valdec.adb, s-valdec.ads, 
	s-valint.adb, s-valint.ads, s-vallld.adb, s-vallld.ads, s-vallli.adb, 
	s-vallli.ads, s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads, 
	s-valuns.adb, s-valuns.ads, s-valuti.adb, s-valuti.ads, xref_lib.adb, 
	s-stchop.adb, i-vxwork-x86.ads, a-crbtgo.ads, a-crbtgo.adb, 
	a-coorse.ads, a-coorse.adb, a-cohama.ads, a-cohama.adb, a-ciorse.ads, 
	a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-chtgop.ads, a-chtgop.ads, 
	a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cihase.ads, a-cohase.adb, 
	a-cohase.ads, a-swuwha.ads, a-ciormu.ads, a-coormu.ads, a-rbtgso.ads,
	a-stunha.ads, a-ciorma.adb, a-coorma.adb, a-ztdeau.adb, a-ztdeau.ads, 
	a-ztexio.adb, a-ztexio.ads: Addition of null-exclusion to anonymous
	access types.
	Update documentation.
	Minor rewording.

From-SVN: r123538
parent 96a94ff4
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -37,9 +37,9 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -37,9 +37,9 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
-------------------------- --------------------------
procedure Delete_Key_Sans_Free procedure Delete_Key_Sans_Free
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
Key : Key_Type; Key : Key_Type;
X : out Node_Access) X : out Node_Access)
is is
Indx : Hash_Type; Indx : Hash_Type;
Prev : Node_Access; Prev : Node_Access;
...@@ -59,7 +59,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -59,7 +59,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
if Equivalent_Keys (Key, X) then if Equivalent_Keys (Key, X) then
if HT.Busy > 0 then if HT.Busy > 0 then
raise Program_Error; raise Program_Error with
"attempt to tamper with elements (container is busy)";
end if; end if;
HT.Buckets (Indx) := Next (X); HT.Buckets (Indx) := Next (X);
HT.Length := HT.Length - 1; HT.Length := HT.Length - 1;
...@@ -76,7 +77,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -76,7 +77,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
if Equivalent_Keys (Key, X) then if Equivalent_Keys (Key, X) then
if HT.Busy > 0 then if HT.Busy > 0 then
raise Program_Error; raise Program_Error with
"attempt to tamper with elements (container is busy)";
end if; end if;
Set_Next (Node => Prev, Next => Next (X)); Set_Next (Node => Prev, Next => Next (X));
HT.Length := HT.Length - 1; HT.Length := HT.Length - 1;
...@@ -130,7 +132,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -130,7 +132,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
begin begin
if B = null then if B = null then
if HT.Busy > 0 then if HT.Busy > 0 then
raise Program_Error; raise Program_Error with
"attempt to tamper with elements (container is busy)";
end if; end if;
if HT.Length = Count_Type'Last then if HT.Length = Count_Type'Last then
...@@ -159,7 +162,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -159,7 +162,8 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
end loop; end loop;
if HT.Busy > 0 then if HT.Busy > 0 then
raise Program_Error; raise Program_Error with
"attempt to tamper with elements (container is busy)";
end if; end if;
if HT.Length = Count_Type'Last then if HT.Length = Count_Type'Last then
...@@ -184,91 +188,129 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -184,91 +188,129 @@ package body Ada.Containers.Hash_Tables.Generic_Keys is
return Hash (Key) mod HT.Buckets'Length; return Hash (Key) mod HT.Buckets'Length;
end Index; end Index;
--------------------- -----------------------------
-- Replace_Element -- -- Generic_Replace_Element --
--------------------- -----------------------------
procedure Generic_Replace_Element procedure Generic_Replace_Element
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
Node : Node_Access; Node : Node_Access;
Key : Key_Type) Key : Key_Type)
is is
begin
pragma Assert (HT.Length > 0); pragma Assert (HT.Length > 0);
pragma Assert (Node /= null);
Old_Hash : constant Hash_Type := Hash (Node);
Old_Indx : constant Hash_Type := Old_Hash mod HT.Buckets'Length;
New_Hash : constant Hash_Type := Hash (Key);
New_Indx : constant Hash_Type := New_Hash mod HT.Buckets'Length;
New_Bucket : Node_Access renames HT.Buckets (New_Indx);
N, M : Node_Access;
begin
if Equivalent_Keys (Key, Node) then if Equivalent_Keys (Key, Node) then
pragma Assert (Hash (Key) = Hash (Node)); pragma Assert (New_Hash = Old_Hash);
if HT.Lock > 0 then if HT.Lock > 0 then
raise Program_Error with raise Program_Error with
"attempt to tamper with cursors (container is locked)"; "attempt to tamper with cursors (container is locked)";
end if; end if;
-- We can change a node's key to Key (that's what Assign is for), but
-- only if Key is not already in the hash table. (In a unique-key
-- hash table as this one a key is mapped to exactly one node only.)
-- The exception is when Key is mapped to Node, in which case the
-- change is allowed.
Assign (Node, Key); Assign (Node, Key);
pragma Assert (Hash (Node) = New_Hash);
pragma Assert (Equivalent_Keys (Key, Node));
return; return;
end if; end if;
declare -- Key is not equivalent to Node, so we now have to determine if it's
J : Hash_Type; -- equivalent to some other node in the hash table. This is the case
K : constant Hash_Type := Index (HT, Key); -- irrespective of whether Key is in the same or a different bucket from
B : Node_Access renames HT.Buckets (K); -- Node.
N : Node_Access := B;
M : Node_Access;
begin N := New_Bucket;
while N /= null loop while N /= null loop
if Equivalent_Keys (Key, N) then if Equivalent_Keys (Key, N) then
raise Program_Error with pragma Assert (N /= Node);
"attempt to replace existing element"; raise Program_Error with
end if; "attempt to replace existing element";
end if;
N := Next (N);
end loop;
J := Hash (Node); N := Next (N);
end loop;
if J = K then -- We have determined that Key is not already in the hash table, so
if HT.Lock > 0 then -- the change is tenatively allowed. We now perform the standard
raise Program_Error with -- checks to determine whether the hash table is locked (because you
"attempt to tamper with cursors (container is locked)"; -- cannot change an element while it's in use by Query_Element or
end if; -- Update_Element), or if the container is busy (because moving a
-- node to a different bucket would interfere with iteration).
Assign (Node, Key); if Old_Indx = New_Indx then
return; -- The node is already in the bucket implied by Key. In this case
end if; -- we merely change its value without moving it.
if HT.Busy > 0 then if HT.Lock > 0 then
raise Program_Error with raise Program_Error with
"attempt to tamper with elements (container is busy)"; "attempt to tamper with cursors (container is locked)";
end if; end if;
Assign (Node, Key); Assign (Node, Key);
pragma Assert (Hash (Node) = New_Hash);
pragma Assert (Equivalent_Keys (Key, Node));
return;
end if;
N := HT.Buckets (J); -- The node is a bucket different from the bucket implied by Key.
pragma Assert (N /= null);
if N = Node then if HT.Busy > 0 then
HT.Buckets (J) := Next (Node); raise Program_Error with
"attempt to tamper with elements (container is busy)";
end if;
else -- Do the assignment first, before moving the node, so that if Assign
pragma Assert (HT.Length > 1); -- propagates an exception, then the hash table will not have been
-- modified (except for any possible side-effect Assign had on Node).
loop Assign (Node, Key);
M := Next (N); pragma Assert (Hash (Node) = New_Hash);
pragma Assert (M /= null); pragma Assert (Equivalent_Keys (Key, Node));
if M = Node then -- Now we can safely remove the node from its current bucket
Set_Next (Node => N, Next => Next (Node));
exit;
end if;
N := M; N := HT.Buckets (Old_Indx);
end loop; pragma Assert (N /= null);
end if;
Set_Next (Node => Node, Next => B); if N = Node then
B := Node; HT.Buckets (Old_Indx) := Next (Node);
end;
else
pragma Assert (HT.Length > 1);
loop
M := Next (N);
pragma Assert (M /= null);
if M = Node then
Set_Next (Node => N, Next => Next (Node));
exit;
end if;
N := M;
end loop;
end if;
-- Now we link the node into its new bucket (corresponding to Key)
Set_Next (Node => Node, Next => New_Bucket);
New_Bucket := Node;
end Generic_Replace_Element; end Generic_Replace_Element;
end Ada.Containers.Hash_Tables.Generic_Keys; end Ada.Containers.Hash_Tables.Generic_Keys;
...@@ -9,10 +9,6 @@ ...@@ -9,10 +9,6 @@
-- -- -- --
-- Copyright (C) 2004-2006, Free Software Foundation, Inc. -- -- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
-- -- -- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
-- apply solely to the contents of the part following the private keyword. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 2, or (at your option) any later ver- -- -- ware Foundation; either version 2, or (at your option) any later ver- --
...@@ -34,6 +30,9 @@ ...@@ -34,6 +30,9 @@
-- This unit was originally developed by Matthew J Heaney. -- -- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- Hash_Table_Type is used to implement hashed containers. This package
-- declares hash-table operations that depend on keys.
generic generic
with package HT_Types is with package HT_Types is
new Generic_Hash_Table_Types (<>); new Generic_Hash_Table_Types (<>);
...@@ -61,13 +60,18 @@ package Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -61,13 +60,18 @@ package Ada.Containers.Hash_Tables.Generic_Keys is
(HT : Hash_Table_Type; (HT : Hash_Table_Type;
Key : Key_Type) return Hash_Type; Key : Key_Type) return Hash_Type;
pragma Inline (Index); pragma Inline (Index);
-- Returns the bucket number (array index value) for the given key
procedure Delete_Key_Sans_Free procedure Delete_Key_Sans_Free
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
Key : Key_Type; Key : Key_Type;
X : out Node_Access); X : out Node_Access);
-- Removes the node (if any) with the given key from the hash table,
-- without deallocating it. Program_Error is raised if the hash
-- table is busy.
function Find (HT : Hash_Table_Type; Key : Key_Type) return Node_Access; function Find (HT : Hash_Table_Type; Key : Key_Type) return Node_Access;
-- Returns the node (if any) corresponding to the given key
generic generic
with function New_Node (Next : Node_Access) return Node_Access; with function New_Node (Next : Node_Access) return Node_Access;
...@@ -76,6 +80,11 @@ package Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -76,6 +80,11 @@ package Ada.Containers.Hash_Tables.Generic_Keys is
Key : Key_Type; Key : Key_Type;
Node : out Node_Access; Node : out Node_Access;
Inserted : out Boolean); Inserted : out Boolean);
-- Attempts to insert a new node with the given key into the hash table.
-- If a node with that key already exists in the table, then that node
-- is returned and Inserted returns False. Otherwise New_Node is called
-- to allocate a new node, and Inserted returns True. Program_Error is
-- raised if the hash table is busy.
generic generic
with function Hash (Node : Node_Access) return Hash_Type; with function Hash (Node : Node_Access) return Hash_Type;
...@@ -84,5 +93,15 @@ package Ada.Containers.Hash_Tables.Generic_Keys is ...@@ -84,5 +93,15 @@ package Ada.Containers.Hash_Tables.Generic_Keys is
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
Node : Node_Access; Node : Node_Access;
Key : Key_Type); Key : Key_Type);
-- Assigns Key to Node, possibly changing its equivalence class. If Node
-- is in the same equivalence class as Key (that is, it's already in the
-- bucket implied by Key), then if the hash table is locked then
-- Program_Error is raised; otherwise Assign is called to assign Key to
-- Node. If Node is in a different bucket from Key, then Program_Error is
-- raised if the hash table is busy. Otherwise it Assigns Key to Node and
-- moves the Node from its current bucket to the bucket implied by Key.
-- Note that it is never proper to assign to Node a key value already
-- in the map, and so if Key is equivalent to some other node then
-- Program_Error is raised.
end Ada.Containers.Hash_Tables.Generic_Keys; end Ada.Containers.Hash_Tables.Generic_Keys;
...@@ -7,13 +7,32 @@ ...@@ -7,13 +7,32 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
-- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. --
-- -- -- --
-- 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 2, 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. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
-- Boston, MA 02110-1301, USA. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
-- this unit does not by itself cause the resulting executable to be --
-- covered by the GNU General Public License. This exception does not --
-- however invalidate any other reasons why the executable file might be --
-- covered by the GNU Public License. --
-- --
-- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- Hash_Table_Type is used to implement hashed containers. This package
-- declares hash-table operations that do not depend on keys.
with Ada.Streams; with Ada.Streams;
generic generic
...@@ -39,20 +58,31 @@ package Ada.Containers.Hash_Tables.Generic_Operations is ...@@ -39,20 +58,31 @@ package Ada.Containers.Hash_Tables.Generic_Operations is
pragma Preelaborate; pragma Preelaborate;
procedure Free_Hash_Table (Buckets : in out Buckets_Access); procedure Free_Hash_Table (Buckets : in out Buckets_Access);
-- First frees the nodes in all non-null buckets of Buckets, and then frees
-- the Buckets array itself.
function Index function Index
(Buckets : Buckets_Type; (Buckets : Buckets_Type;
Node : Node_Access) return Hash_Type; Node : Node_Access) return Hash_Type;
pragma Inline (Index); pragma Inline (Index);
-- Uses the hash value of Node to compute its Buckets array index
function Index function Index
(Hash_Table : Hash_Table_Type; (Hash_Table : Hash_Table_Type;
Node : Node_Access) return Hash_Type; Node : Node_Access) return Hash_Type;
pragma Inline (Index); pragma Inline (Index);
-- Uses the hash value of Node to compute its Hash_Table buckets array
-- index.
procedure Adjust (HT : in out Hash_Table_Type); procedure Adjust (HT : in out Hash_Table_Type);
-- Used to implement controlled Adjust. It is assumed that HT has the value
-- of the bit-wise copy that immediately follows controlled Finalize.
-- Adjust first allocates a new buckets array for HT (having the same
-- length as the source), and then allocates a copy of each node of source.
procedure Finalize (HT : in out Hash_Table_Type); procedure Finalize (HT : in out Hash_Table_Type);
-- Used to implement controlled Finalize. It first calls Clear to
-- deallocate any remaining nodes, and then deallocates the buckets array.
generic generic
with function Find with function Find
...@@ -60,46 +90,77 @@ package Ada.Containers.Hash_Tables.Generic_Operations is ...@@ -60,46 +90,77 @@ package Ada.Containers.Hash_Tables.Generic_Operations is
Key : Node_Access) return Boolean; Key : Node_Access) return Boolean;
function Generic_Equal function Generic_Equal
(L, R : Hash_Table_Type) return Boolean; (L, R : Hash_Table_Type) return Boolean;
-- Used to implement hashed container equality. For each node in hash table
-- L, it calls Find to search for an equivalent item in hash table R. If
-- Find returns False for any node then Generic_Equal terminates
-- immediately and returns False. Otherwise if Find returns True for every
-- node then Generic_Equal returns True.
procedure Clear (HT : in out Hash_Table_Type); procedure Clear (HT : in out Hash_Table_Type);
-- Deallocates each node in hash table HT. (Note that it only deallocates
-- the nodes, not the buckets array.) Program_Error is raised if the hash
-- table is busy.
procedure Move (Target, Source : in out Hash_Table_Type); procedure Move (Target, Source : in out Hash_Table_Type);
-- Moves (not copies) the buckets array and nodes from Source to
-- Target. Program_Error is raised if Source is busy. The Target is first
-- cleared to deallocate its nodes (implying that Program_Error is also
-- raised if Target is busy). Source is empty following the move.
function Capacity (HT : Hash_Table_Type) return Count_Type; function Capacity (HT : Hash_Table_Type) return Count_Type;
-- Returns the length of the buckets array
procedure Reserve_Capacity procedure Reserve_Capacity
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
N : Count_Type); N : Count_Type);
-- If N is greater than the current capacity, then it expands the buckets
-- array to at least the value N. If N is less than the current capacity,
-- then it contracts the buckets array. In either case existing nodes are
-- rehashed onto the new buckets array, and the old buckets array is
-- deallocated. Program_Error is raised if the hash table is busy.
procedure Delete_Node_Sans_Free procedure Delete_Node_Sans_Free
(HT : in out Hash_Table_Type; (HT : in out Hash_Table_Type;
X : Node_Access); X : Node_Access);
-- Removes node X from the hash table without deallocating the node
function First (HT : Hash_Table_Type) return Node_Access; function First (HT : Hash_Table_Type) return Node_Access;
-- Returns the head of the list in the first (lowest-index) non-empty
-- bucket.
function Next function Next
(HT : Hash_Table_Type; (HT : Hash_Table_Type;
Node : Node_Access) return Node_Access; Node : Node_Access) return Node_Access;
-- Returns the node that immediately follows Node. This corresponds to
-- either the next node in the same bucket, or (if Node is the last node in
-- its bucket) the head of the list in the first non-empty bucket that
-- follows.
generic generic
with procedure Process (Node : Node_Access); with procedure Process (Node : Node_Access);
procedure Generic_Iteration (HT : Hash_Table_Type); procedure Generic_Iteration (HT : Hash_Table_Type);
-- Calls Process for each node in hash table HT
generic generic
use Ada.Streams; use Ada.Streams;
with procedure Write with procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
procedure Generic_Write procedure Generic_Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
HT : Hash_Table_Type); HT : Hash_Table_Type);
-- Used to implement the streaming attribute for hashed containers. It
-- calls Write for each node to write its value into Stream.
generic generic
use Ada.Streams; use Ada.Streams;
with function New_Node (Stream : access Root_Stream_Type'Class) with function New_Node (Stream : not null access Root_Stream_Type'Class)
return Node_Access; return Node_Access;
procedure Generic_Read procedure Generic_Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
HT : out Hash_Table_Type); HT : out Hash_Table_Type);
-- Used to implement the streaming attribute for hashed containers. It
-- first clears hash table HT, then populates the hash table by calling
-- New_Node for each item in Stream.
end Ada.Containers.Hash_Tables.Generic_Operations; end Ada.Containers.Hash_Tables.Generic_Operations;
...@@ -72,7 +72,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -72,7 +72,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
pragma Inline (Next); pragma Inline (Next);
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
procedure Set_Next (Node : Node_Access; Next : Node_Access); procedure Set_Next (Node : Node_Access; Next : Node_Access);
pragma Inline (Set_Next); pragma Inline (Set_Next);
...@@ -80,7 +80,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -80,7 +80,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
function Vet (Position : Cursor) return Boolean; function Vet (Position : Cursor) return Boolean;
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
-------------------------- --------------------------
...@@ -772,7 +772,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -772,7 +772,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
procedure Read_Nodes is new HT_Ops.Generic_Read (Read_Node); procedure Read_Nodes is new HT_Ops.Generic_Read (Read_Node);
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map) Container : out Map)
is is
begin begin
...@@ -780,7 +780,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -780,7 +780,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -792,7 +792,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -792,7 +792,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
...@@ -1050,7 +1050,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -1050,7 +1050,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
procedure Write_Nodes is new HT_Ops.Generic_Write (Write_Node); procedure Write_Nodes is new HT_Ops.Generic_Write (Write_Node);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map) Container : Map)
is is
begin begin
...@@ -1058,7 +1058,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -1058,7 +1058,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
...@@ -1070,7 +1070,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is ...@@ -1070,7 +1070,7 @@ package body Ada.Containers.Indefinite_Hashed_Maps is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -198,13 +198,13 @@ private ...@@ -198,13 +198,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -214,13 +214,13 @@ private ...@@ -214,13 +214,13 @@ private
Node => null); Node => null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Container : Map);
for Map'Write use Write; for Map'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map); Container : out Map);
for Map'Read use Read; for Map'Read use Read;
......
...@@ -84,7 +84,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -84,7 +84,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
function Next (Node : Node_Access) return Node_Access; function Next (Node : Node_Access) return Node_Access;
pragma Inline (Next); pragma Inline (Next);
function Read_Node (Stream : access Root_Stream_Type'Class) function Read_Node (Stream : not null access Root_Stream_Type'Class)
return Node_Access; return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
...@@ -94,7 +94,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -94,7 +94,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
function Vet (Position : Cursor) return Boolean; function Vet (Position : Cursor) return Boolean;
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1094,7 +1094,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1094,7 +1094,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
begin begin
...@@ -1102,7 +1102,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1102,7 +1102,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1114,7 +1114,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1114,7 +1114,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
X : Element_Access := new Element_Type'(Element_Type'Input (Stream)); X : Element_Access := new Element_Type'(Element_Type'Input (Stream));
...@@ -1730,7 +1730,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1730,7 +1730,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
begin begin
...@@ -1738,7 +1738,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1738,7 +1738,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
...@@ -1750,7 +1750,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is ...@@ -1750,7 +1750,7 @@ package body Ada.Containers.Indefinite_Hashed_Sets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -241,13 +241,13 @@ private ...@@ -241,13 +241,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -257,13 +257,13 @@ private ...@@ -257,13 +257,13 @@ private
Node => null); Node => null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -1048,7 +1048,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is ...@@ -1048,7 +1048,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
Container : out Map) Container : out Map)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -1059,7 +1059,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is ...@@ -1059,7 +1059,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
begin begin
...@@ -1326,7 +1326,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is ...@@ -1326,7 +1326,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
Container : Map) Container : Map)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1338,7 +1338,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is ...@@ -1338,7 +1338,7 @@ package body Ada.Containers.Indefinite_Ordered_Maps is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -1508,11 +1508,11 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1508,11 +1508,11 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -1523,7 +1523,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1523,7 +1523,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
begin begin
...@@ -1542,7 +1542,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1542,7 +1542,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1823,11 +1823,11 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1823,11 +1823,11 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1839,7 +1839,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1839,7 +1839,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
...@@ -1853,7 +1853,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is ...@@ -1853,7 +1853,7 @@ package body Ada.Containers.Indefinite_Ordered_Multisets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
......
...@@ -277,25 +277,27 @@ private ...@@ -277,25 +277,27 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
procedure Write (Stream : access Root_Stream_Type'Class; Container : Set); procedure Write
(Stream : not null access Root_Stream_Type'Class;
Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -1382,11 +1382,11 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1382,11 +1382,11 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -1397,7 +1397,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1397,7 +1397,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
...@@ -1418,7 +1418,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1418,7 +1418,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1717,11 +1717,11 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1717,11 +1717,11 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1733,7 +1733,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1733,7 +1733,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
...@@ -1747,7 +1747,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is ...@@ -1747,7 +1747,7 @@ package body Ada.Containers.Indefinite_Ordered_Sets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
......
...@@ -281,13 +281,13 @@ private ...@@ -281,13 +281,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -295,13 +295,13 @@ private ...@@ -295,13 +295,13 @@ private
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -65,7 +65,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -65,7 +65,7 @@ package body Ada.Containers.Hashed_Maps is
pragma Inline (Next); pragma Inline (Next);
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Set_Next (Node : Node_Access; Next : Node_Access); procedure Set_Next (Node : Node_Access; Next : Node_Access);
...@@ -74,7 +74,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -74,7 +74,7 @@ package body Ada.Containers.Hashed_Maps is
function Vet (Position : Cursor) return Boolean; function Vet (Position : Cursor) return Boolean;
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -703,7 +703,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -703,7 +703,7 @@ package body Ada.Containers.Hashed_Maps is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map) Container : out Map)
is is
begin begin
...@@ -711,7 +711,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -711,7 +711,7 @@ package body Ada.Containers.Hashed_Maps is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -723,7 +723,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -723,7 +723,7 @@ package body Ada.Containers.Hashed_Maps is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
...@@ -924,7 +924,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -924,7 +924,7 @@ package body Ada.Containers.Hashed_Maps is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map) Container : Map)
is is
begin begin
...@@ -932,7 +932,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -932,7 +932,7 @@ package body Ada.Containers.Hashed_Maps is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
...@@ -944,7 +944,7 @@ package body Ada.Containers.Hashed_Maps is ...@@ -944,7 +944,7 @@ package body Ada.Containers.Hashed_Maps is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -192,13 +192,13 @@ private ...@@ -192,13 +192,13 @@ private
use Ada.Streams; use Ada.Streams;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Map); Container : Map);
for Map'Write use Write; for Map'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Map); Container : out Map);
for Map'Read use Read; for Map'Read use Read;
...@@ -215,13 +215,13 @@ private ...@@ -215,13 +215,13 @@ private
end record; end record;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
......
...@@ -85,7 +85,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -85,7 +85,7 @@ package body Ada.Containers.Hashed_Sets is
function Next (Node : Node_Access) return Node_Access; function Next (Node : Node_Access) return Node_Access;
pragma Inline (Next); pragma Inline (Next);
function Read_Node (Stream : access Root_Stream_Type'Class) function Read_Node (Stream : not null access Root_Stream_Type'Class)
return Node_Access; return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
...@@ -95,7 +95,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -95,7 +95,7 @@ package body Ada.Containers.Hashed_Sets is
function Vet (Position : Cursor) return Boolean; function Vet (Position : Cursor) return Boolean;
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1009,15 +1009,15 @@ package body Ada.Containers.Hashed_Sets is ...@@ -1009,15 +1009,15 @@ package body Ada.Containers.Hashed_Sets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
begin begin
Read_Nodes (Stream, Container.HT); Read_Nodes (Stream, Container.HT);
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1028,7 +1028,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -1028,7 +1028,7 @@ package body Ada.Containers.Hashed_Sets is
-- Read_Node -- -- Read_Node --
--------------- ---------------
function Read_Node (Stream : access Root_Stream_Type'Class) function Read_Node (Stream : not null access Root_Stream_Type'Class)
return Node_Access return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
...@@ -1561,7 +1561,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -1561,7 +1561,7 @@ package body Ada.Containers.Hashed_Sets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
begin begin
...@@ -1569,7 +1569,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -1569,7 +1569,7 @@ package body Ada.Containers.Hashed_Sets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
...@@ -1581,7 +1581,7 @@ package body Ada.Containers.Hashed_Sets is ...@@ -1581,7 +1581,7 @@ package body Ada.Containers.Hashed_Sets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -238,13 +238,13 @@ private ...@@ -238,13 +238,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -252,13 +252,13 @@ private ...@@ -252,13 +252,13 @@ private
No_Element : constant Cursor := (Container => null, Node => null); No_Element : constant Cursor := (Container => null, Node => null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -962,7 +962,7 @@ package body Ada.Containers.Ordered_Maps is ...@@ -962,7 +962,7 @@ package body Ada.Containers.Ordered_Maps is
Container : out Map) Container : out Map)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -973,7 +973,7 @@ package body Ada.Containers.Ordered_Maps is ...@@ -973,7 +973,7 @@ package body Ada.Containers.Ordered_Maps is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
begin begin
...@@ -1206,7 +1206,7 @@ package body Ada.Containers.Ordered_Maps is ...@@ -1206,7 +1206,7 @@ package body Ada.Containers.Ordered_Maps is
Container : Map) Container : Map)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1218,7 +1218,7 @@ package body Ada.Containers.Ordered_Maps is ...@@ -1218,7 +1218,7 @@ package body Ada.Containers.Ordered_Maps is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
......
...@@ -1425,11 +1425,11 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1425,11 +1425,11 @@ package body Ada.Containers.Ordered_Multisets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -1440,7 +1440,7 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1440,7 +1440,7 @@ package body Ada.Containers.Ordered_Multisets is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
begin begin
...@@ -1459,7 +1459,7 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1459,7 +1459,7 @@ package body Ada.Containers.Ordered_Multisets is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1729,11 +1729,11 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1729,11 +1729,11 @@ package body Ada.Containers.Ordered_Multisets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1745,7 +1745,7 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1745,7 +1745,7 @@ package body Ada.Containers.Ordered_Multisets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
...@@ -1759,7 +1759,7 @@ package body Ada.Containers.Ordered_Multisets is ...@@ -1759,7 +1759,7 @@ package body Ada.Containers.Ordered_Multisets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
......
...@@ -282,13 +282,13 @@ private ...@@ -282,13 +282,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -296,13 +296,13 @@ private ...@@ -296,13 +296,13 @@ private
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -1297,11 +1297,11 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1297,11 +1297,11 @@ package body Ada.Containers.Ordered_Sets is
---------- ----------
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set) Container : out Set)
is is
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
pragma Inline (Read_Node); pragma Inline (Read_Node);
procedure Read is procedure Read is
...@@ -1312,7 +1312,7 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1312,7 +1312,7 @@ package body Ada.Containers.Ordered_Sets is
--------------- ---------------
function Read_Node function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access (Stream : not null access Root_Stream_Type'Class) return Node_Access
is is
Node : Node_Access := new Node_Type; Node : Node_Access := new Node_Type;
...@@ -1333,7 +1333,7 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1333,7 +1333,7 @@ package body Ada.Containers.Ordered_Sets is
end Read; end Read;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor) Item : out Cursor)
is is
begin begin
...@@ -1618,11 +1618,11 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1618,11 +1618,11 @@ package body Ada.Containers.Ordered_Sets is
----------- -----------
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set) Container : Set)
is is
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
pragma Inline (Write_Node); pragma Inline (Write_Node);
...@@ -1634,7 +1634,7 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1634,7 +1634,7 @@ package body Ada.Containers.Ordered_Sets is
---------------- ----------------
procedure Write_Node procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access) Node : Node_Access)
is is
begin begin
...@@ -1648,7 +1648,7 @@ package body Ada.Containers.Ordered_Sets is ...@@ -1648,7 +1648,7 @@ package body Ada.Containers.Ordered_Sets is
end Write; end Write;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor) Item : Cursor)
is is
begin begin
......
...@@ -270,13 +270,13 @@ private ...@@ -270,13 +270,13 @@ private
end record; end record;
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : Cursor); Item : Cursor);
for Cursor'Write use Write; for Cursor'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Item : out Cursor); Item : out Cursor);
for Cursor'Read use Read; for Cursor'Read use Read;
...@@ -284,13 +284,13 @@ private ...@@ -284,13 +284,13 @@ private
No_Element : constant Cursor := Cursor'(null, null); No_Element : constant Cursor := Cursor'(null, null);
procedure Write procedure Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : Set); Container : Set);
for Set'Write use Write; for Set'Write use Write;
procedure Read procedure Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Container : out Set); Container : out Set);
for Set'Read use Read; for Set'Read use Read;
......
...@@ -6,13 +6,34 @@ ...@@ -6,13 +6,34 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
-- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. --
-- -- -- --
-- 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 2, 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. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
-- Boston, MA 02110-1301, USA. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
-- this unit does not by itself cause the resulting executable to be --
-- covered by the GNU General Public License. This exception does not --
-- however invalidate any other reasons why the executable file might be --
-- covered by the GNU Public License. --
-- --
-- This unit was originally developed by Matthew J Heaney. --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- This package declares the prime numbers array used to implement hashed
-- containers. Bucket arrays are always allocated with a prime-number
-- length (computed using To_Prime below), as this produces better scatter
-- when hash values are folded.
package Ada.Containers.Prime_Numbers is package Ada.Containers.Prime_Numbers is
pragma Pure; pragma Pure;
...@@ -27,5 +48,6 @@ package Ada.Containers.Prime_Numbers is ...@@ -27,5 +48,6 @@ package Ada.Containers.Prime_Numbers is
1610612741, 3221225473, 4294967291); 1610612741, 3221225473, 4294967291);
function To_Prime (Length : Count_Type) return Hash_Type; function To_Prime (Length : Count_Type) return Hash_Type;
-- Returns the smallest value in Primes not less than Length
end Ada.Containers.Prime_Numbers; end Ada.Containers.Prime_Numbers;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -698,7 +698,7 @@ package body Ada.Containers.Red_Black_Trees.Generic_Operations is ...@@ -698,7 +698,7 @@ package body Ada.Containers.Red_Black_Trees.Generic_Operations is
------------------ ------------------
procedure Generic_Read procedure Generic_Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Tree : in out Tree_Type) Tree : in out Tree_Type)
is is
N : Count_Type'Base; N : Count_Type'Base;
...@@ -776,7 +776,7 @@ package body Ada.Containers.Red_Black_Trees.Generic_Operations is ...@@ -776,7 +776,7 @@ package body Ada.Containers.Red_Black_Trees.Generic_Operations is
------------------- -------------------
procedure Generic_Write procedure Generic_Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Tree : Tree_Type) Tree : Tree_Type)
is is
procedure Process (Node : Node_Access); procedure Process (Node : Node_Access);
......
...@@ -137,10 +137,10 @@ package Ada.Containers.Red_Black_Trees.Generic_Operations is ...@@ -137,10 +137,10 @@ package Ada.Containers.Red_Black_Trees.Generic_Operations is
generic generic
with procedure Write_Node with procedure Write_Node
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Node : Node_Access); Node : Node_Access);
procedure Generic_Write procedure Generic_Write
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Tree : Tree_Type); Tree : Tree_Type);
-- Used to implement stream attribute T'Write. Generic_Write -- Used to implement stream attribute T'Write. Generic_Write
-- first writes the number of nodes into Stream, then calls -- first writes the number of nodes into Stream, then calls
...@@ -149,9 +149,9 @@ package Ada.Containers.Red_Black_Trees.Generic_Operations is ...@@ -149,9 +149,9 @@ package Ada.Containers.Red_Black_Trees.Generic_Operations is
generic generic
with procedure Clear (Tree : in out Tree_Type); with procedure Clear (Tree : in out Tree_Type);
with function Read_Node with function Read_Node
(Stream : access Root_Stream_Type'Class) return Node_Access; (Stream : not null access Root_Stream_Type'Class) return Node_Access;
procedure Generic_Read procedure Generic_Read
(Stream : access Root_Stream_Type'Class; (Stream : not null access Root_Stream_Type'Class;
Tree : in out Tree_Type); Tree : in out Tree_Type);
-- Used to implement stream attribute T'Read. Generic_Read -- Used to implement stream attribute T'Read. Generic_Read
-- first clears Tree. It then reads the number of nodes out of -- first clears Tree. It then reads the number of nodes out of
......
...@@ -6,9 +6,7 @@ ...@@ -6,9 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2006, Free Software Foundation, Inc. -- -- This specification is derived from the Ada Reference Manual for use with --
-- --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,13 +6,11 @@ ...@@ -6,13 +6,11 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2005-2006, Free Software Foundation, Inc. -- -- This specification is derived from the Ada Reference Manual for use with --
-- --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
--- -- -- --
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
package Ada.Environment_Variables is package Ada.Environment_Variables is
......
...@@ -179,7 +179,7 @@ package body Exception_Propagation is ...@@ -179,7 +179,7 @@ package body Exception_Propagation is
(UW_Version : Integer; (UW_Version : Integer;
UW_Phases : Unwind_Action; UW_Phases : Unwind_Action;
UW_Eclass : Exception_Class; UW_Eclass : Exception_Class;
UW_Exception : access GNAT_GCC_Exception; UW_Exception : not null access GNAT_GCC_Exception;
UW_Context : System.Address; UW_Context : System.Address;
UW_Argument : System.Address) return Unwind_Reason_Code; UW_Argument : System.Address) return Unwind_Reason_Code;
-- Hook called at each step of the forced unwinding we perform to -- Hook called at each step of the forced unwinding we perform to
...@@ -191,11 +191,11 @@ package body Exception_Propagation is ...@@ -191,11 +191,11 @@ package body Exception_Propagation is
-- __gnat stubs for these. -- __gnat stubs for these.
procedure Unwind_RaiseException procedure Unwind_RaiseException
(UW_Exception : access GNAT_GCC_Exception); (UW_Exception : not null access GNAT_GCC_Exception);
pragma Import (C, Unwind_RaiseException, "__gnat_Unwind_RaiseException"); pragma Import (C, Unwind_RaiseException, "__gnat_Unwind_RaiseException");
procedure Unwind_ForcedUnwind procedure Unwind_ForcedUnwind
(UW_Exception : access GNAT_GCC_Exception; (UW_Exception : not null access GNAT_GCC_Exception;
UW_Handler : System.Address; UW_Handler : System.Address;
UW_Argument : System.Address); UW_Argument : System.Address);
pragma Import (C, Unwind_ForcedUnwind, "__gnat_Unwind_ForcedUnwind"); pragma Import (C, Unwind_ForcedUnwind, "__gnat_Unwind_ForcedUnwind");
...@@ -353,7 +353,7 @@ package body Exception_Propagation is ...@@ -353,7 +353,7 @@ package body Exception_Propagation is
(UW_Version : Integer; (UW_Version : Integer;
UW_Phases : Unwind_Action; UW_Phases : Unwind_Action;
UW_Eclass : Exception_Class; UW_Eclass : Exception_Class;
UW_Exception : access GNAT_GCC_Exception; UW_Exception : not null access GNAT_GCC_Exception;
UW_Context : System.Address; UW_Context : System.Address;
UW_Argument : System.Address) return Unwind_Reason_Code UW_Argument : System.Address) return Unwind_Reason_Code
is is
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -59,25 +59,51 @@ package Ada.Containers.Red_Black_Trees.Generic_Set_Operations is ...@@ -59,25 +59,51 @@ package Ada.Containers.Red_Black_Trees.Generic_Set_Operations is
pragma Pure; pragma Pure;
procedure Union (Target : in out Tree_Type; Source : Tree_Type); procedure Union (Target : in out Tree_Type; Source : Tree_Type);
-- Attempts to insert each element of Source in Target. If Target is
-- busy then Program_Error is raised. We say "attempts" here because
-- if these are unique-element sets, then the insertion should fail
-- (not insert a new item) when the insertion item from Source is
-- equivalent to an item already in Target. If these are multisets
-- then of course the attempt should always succeed.
function Union (Left, Right : Tree_Type) return Tree_Type; function Union (Left, Right : Tree_Type) return Tree_Type;
-- Makes a copy of Left, and attempts to insert each element of
-- Right into the copy, then returns the copy.
procedure Intersection (Target : in out Tree_Type; Source : Tree_Type); procedure Intersection (Target : in out Tree_Type; Source : Tree_Type);
-- Removes elements from Target that are not equivalent to items in
-- Source. If Target is busy then Program_Error is raised.
function Intersection (Left, Right : Tree_Type) return Tree_Type; function Intersection (Left, Right : Tree_Type) return Tree_Type;
-- Returns a set comprising all the items in Left equivalent to items in
-- Right.
procedure Difference (Target : in out Tree_Type; Source : Tree_Type); procedure Difference (Target : in out Tree_Type; Source : Tree_Type);
-- Removes elements from Target that are equivalent to items in Source. If
-- Target is busy then Program_Error is raised.
function Difference (Left, Right : Tree_Type) return Tree_Type; function Difference (Left, Right : Tree_Type) return Tree_Type;
-- Returns a set comprising all the items in Left not equivalent to items
-- in Right.
procedure Symmetric_Difference procedure Symmetric_Difference
(Target : in out Tree_Type; (Target : in out Tree_Type;
Source : Tree_Type); Source : Tree_Type);
-- Removes from Target elements that are equivalent to items in Source, and
-- inserts into Target items from Source not equivalent elements in
-- Target. If Target is busy then Program_Error is raised.
function Symmetric_Difference (Left, Right : Tree_Type) return Tree_Type; function Symmetric_Difference (Left, Right : Tree_Type) return Tree_Type;
-- Returns a set comprising the union of the elements in Left not
-- equivalent to items in Right, and the elements in Right not equivalent
-- to items in Left.
function Is_Subset (Subset : Tree_Type; Of_Set : Tree_Type) return Boolean; function Is_Subset (Subset : Tree_Type; Of_Set : Tree_Type) return Boolean;
-- Returns False if Subset contains at least one element not equivalent to
-- any item in Of_Set; returns True otherwise.
function Overlap (Left, Right : Tree_Type) return Boolean; function Overlap (Left, Right : Tree_Type) return Boolean;
-- Returns True if at least one element of Left is equivalent to an item in
-- Right; returns False otherwise.
end Ada.Containers.Red_Black_Trees.Generic_Set_Operations; end Ada.Containers.Red_Black_Trees.Generic_Set_Operations;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -76,7 +76,7 @@ package body Ada.Streams.Stream_IO is ...@@ -76,7 +76,7 @@ package body Ada.Streams.Stream_IO is
-- No special processing required for closing Stream_IO file -- No special processing required for closing Stream_IO file
procedure AFCB_Close (File : access Stream_AFCB) is procedure AFCB_Close (File : not null access Stream_AFCB) is
pragma Warnings (Off, File); pragma Warnings (Off, File);
begin begin
null; null;
...@@ -86,7 +86,7 @@ package body Ada.Streams.Stream_IO is ...@@ -86,7 +86,7 @@ package body Ada.Streams.Stream_IO is
-- AFCB_Free -- -- AFCB_Free --
--------------- ---------------
procedure AFCB_Free (File : access Stream_AFCB) is procedure AFCB_Free (File : not null access Stream_AFCB) is
type FCB_Ptr is access all Stream_AFCB; type FCB_Ptr is access all Stream_AFCB;
FT : FCB_Ptr := FCB_Ptr (File); FT : FCB_Ptr := FCB_Ptr (File);
......
...@@ -176,8 +176,8 @@ private ...@@ -176,8 +176,8 @@ private
function AFCB_Allocate (Control_Block : Stream_AFCB) return FCB.AFCB_Ptr; function AFCB_Allocate (Control_Block : Stream_AFCB) return FCB.AFCB_Ptr;
procedure AFCB_Close (File : access Stream_AFCB); procedure AFCB_Close (File : not null access Stream_AFCB);
procedure AFCB_Free (File : access Stream_AFCB); procedure AFCB_Free (File : not null access Stream_AFCB);
procedure Read procedure Read
(File : in out Stream_AFCB; (File : in out Stream_AFCB;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- This specification is adapted from the Ada Reference Manual for use with -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely -- -- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a -- -- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. -- -- modified version, any changes that you have made are clearly indicated. --
......
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