Resync with latest version of AI-302

From-SVN: r101079
This commit is contained in:
Arnaud Charlet 2005-06-16 11:07:25 +02:00
parent bc979ad1ee
commit 8d3ed5b85b
5 changed files with 67 additions and 55 deletions

View File

@ -2,11 +2,12 @@
-- --
-- GNAT LIBRARY COMPONENTS --
-- --
-- ADA.CONTAINERS.INDEFINITE_HASHED_SETS --
-- A D A . C O N T A I N E R S . --
-- I N D E F I N I T E _ H A S H E D _ S E T S --
-- --
-- S p e c --
-- --
-- Copyright (C) 2004 Free Software Foundation, Inc. --
-- Copyright (C) 2004-2005 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 --
@ -35,16 +36,15 @@
with Ada.Containers.Hash_Tables;
with Ada.Streams;
with Ada.Finalization;
generic
type Element_Type (<>) is private;
with function Hash (Element : Element_Type) return Hash_Type;
-- TODO: get a ruling from ARG in Atlanta re the name and
-- order of these declarations ???
with function Equivalent_Keys (Left, Right : Element_Type) return Boolean;
with function Equivalent_Elements (Left, Right : Element_Type)
return Boolean;
with function "=" (Left, Right : Element_Type) return Boolean is <>;
@ -62,6 +62,8 @@ package Ada.Containers.Indefinite_Hashed_Sets is
function "=" (Left, Right : Set) return Boolean;
function Equivalent_Sets (Left, Right : Set) return Boolean;
function Length (Container : Set) return Count_Type;
function Is_Empty (Container : Set) return Boolean;
@ -74,10 +76,10 @@ package Ada.Containers.Indefinite_Hashed_Sets is
(Position : Cursor;
Process : not null access procedure (Element : Element_Type));
-- TODO: resolve in atlanta ???
-- procedure Replace_Element (Container : in out Set;
-- Position : Cursor;
-- By : Element_Type);
procedure Replace_Element
(Container : Set;
Position : Cursor;
By : Element_Type);
procedure Move
(Target : in out Set;
@ -97,9 +99,35 @@ package Ada.Containers.Indefinite_Hashed_Sets is
procedure Delete (Container : in out Set; Item : Element_Type);
procedure Delete (Container : in out Set; Position : in out Cursor);
procedure Exclude (Container : in out Set; Item : Element_Type);
procedure Delete (Container : in out Set; Position : in out Cursor);
function Contains (Container : Set; Item : Element_Type) return Boolean;
function Find (Container : Set; Item : Element_Type) return Cursor;
function First (Container : Set) return Cursor;
function Next (Position : Cursor) return Cursor;
procedure Next (Position : in out Cursor);
function Has_Element (Position : Cursor) return Boolean;
function Equivalent_Elements (Left, Right : Cursor) return Boolean;
function Equivalent_Elements
(Left : Cursor;
Right : Element_Type) return Boolean;
function Equivalent_Elements
(Left : Element_Type;
Right : Cursor) return Boolean;
procedure Iterate
(Container : Set;
Process : not null access procedure (Position : Cursor));
procedure Union (Target : in out Set; Source : Set);
@ -126,13 +154,9 @@ package Ada.Containers.Indefinite_Hashed_Sets is
function "xor" (Left, Right : Set) return Set
renames Symmetric_Difference;
function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
function Overlap (Left, Right : Set) return Boolean;
function Contains (Container : Set; Item : Element_Type) return Boolean;
function Find (Container : Set; Item : Element_Type) return Cursor;
function Is_Subset (Subset : Set; Of_Set : Set) return Boolean;
function Capacity (Container : Set) return Count_Type;
@ -140,28 +164,6 @@ package Ada.Containers.Indefinite_Hashed_Sets is
(Container : in out Set;
Capacity : Count_Type);
function First (Container : Set) return Cursor;
function Next (Position : Cursor) return Cursor;
procedure Next (Position : in out Cursor);
function Has_Element (Position : Cursor) return Boolean;
function Equivalent_Keys (Left, Right : Cursor) return Boolean;
function Equivalent_Keys
(Left : Cursor;
Right : Element_Type) return Boolean;
function Equivalent_Keys
(Left : Element_Type;
Right : Cursor) return Boolean;
procedure Iterate
(Container : Set;
Process : not null access procedure (Position : Cursor));
generic
type Key_Type (<>) is limited private;
@ -183,16 +185,16 @@ package Ada.Containers.Indefinite_Hashed_Sets is
function Element (Container : Set; Key : Key_Type) return Element_Type;
-- TODO: resolve in atlanta???
-- procedure Replace (Container : in out Set;
-- Key : Key_Type;
-- New_Item : Element_Type);
procedure Replace
(Container : in out Set;
Key : Key_Type;
New_Item : Element_Type);
procedure Delete (Container : in out Set; Key : Key_Type);
procedure Exclude (Container : in out Set; Key : Key_Type);
procedure Checked_Update_Element
procedure Update_Element_Preserving_Key
(Container : in out Set;
Position : Cursor;
Process : not null access
@ -211,18 +213,30 @@ private
type Node_Type;
type Node_Access is access Node_Type;
package HT_Types is
new Hash_Tables.Generic_Hash_Table_Types (Node_Access);
type Element_Access is access Element_Type;
use HT_Types;
type Node_Type is
limited record
Element : Element_Access;
Next : Node_Access;
end record;
type Set is new Hash_Table_Type with null record;
package HT_Types is new Hash_Tables.Generic_Hash_Table_Types
(Node_Type,
Node_Access);
type Set is new Ada.Finalization.Controlled with record
HT : HT_Types.Hash_Table_Type;
end record;
procedure Adjust (Container : in out Set);
procedure Finalize (Container : in out Set);
type Set_Access is access constant Set;
use HT_Types;
use Ada.Finalization;
type Set_Access is access all Set;
for Set_Access'Storage_Size use 0;
type Cursor is
@ -249,7 +263,6 @@ private
for Set'Read use Read;
Empty_Set : constant Set := (Hash_Table_Type with null record);
Empty_Set : constant Set := (Controlled with HT => (null, 0, 0, 0));
end Ada.Containers.Indefinite_Hashed_Sets;

View File

@ -13,7 +13,6 @@
-- --
------------------------------------------------------------------------------
with Ada.Strings.Maps;
package Ada.Strings.Fixed is

View File

@ -2,11 +2,11 @@
-- --
-- GNAT LIBRARY COMPONENTS --
-- --
-- ADA.STRINGS.UNBOUNDED.HASH --
-- A D A . S T R I N G S . U N B O U N D E D . H A S H --
-- --
-- S p e c --
-- --
-- Copyright (C) 2004 Free Software Foundation, Inc. --
-- Copyright (C) 2004-2005 Free Software Foundation, Inc. --
-- --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --

View File

@ -1,6 +1,6 @@
------------------------------------------------------------------------------
-- --
-- GNAT RUNTIME COMPONENTS --
-- GNAT RUN-TIME COMPONENTS --
-- --
-- A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D . A U X --
-- --

View File

@ -1,6 +1,6 @@
------------------------------------------------------------------------------
-- --
-- GNAT RUNTIME COMPONENTS --
-- GNAT RUN-TIME COMPONENTS --
-- --
-- A D A . S T R I N G S . W I D E _ W I D E _ U N B O U N D E D . A U X --
-- --