Resync with latest version of AI-302
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 16 Jun 2005 09:07:25 +0000 (11:07 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 16 Jun 2005 09:07:25 +0000 (11:07 +0200)
From-SVN: r101079

gcc/ada/a-cihase.ads
gcc/ada/a-strfix.ads
gcc/ada/a-stunha.ads
gcc/ada/a-szunau.adb
gcc/ada/a-szunau.ads

index 53ec645be09565028a157d5793905a52b552e963..893864346e535d907f28653835791e6938e0c74b 100644 (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 --
 
 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;
+
+   package HT_Types is new Hash_Tables.Generic_Hash_Table_Types
+     (Node_Type,
+      Node_Access);
 
-   type Set is new Hash_Table_Type with null record;
+   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;
-
index bf1a496828de0ea271f1267a085ec276483712a4..b85b40786451a2d6207548244f3c739f913aa3a4 100644 (file)
@@ -13,7 +13,6 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
-
 with Ada.Strings.Maps;
 
 package Ada.Strings.Fixed is
index b838bcbdcdfc0f68d63ffbf7fa4211ca3b629823..81716555389f2ac32e0bc8c848a079da34ec44a1 100644 (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 --
index c022a5b28e3a1ff446426946470b9bf56cf4759a..119f56b7e3d6fe1486c22848ccfd7bd24eb527cd 100644 (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  --
 --                                                                          --
index 6333a1e7459b99b19748dcc273ecb7105328054b..01e7055403bb7c7053f95484c3dfab9bae2b45ee 100644 (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  --
 --                                                                          --