From 8d3ed5b85bd4008118fe7853d2834b6e8ad4ff2c Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Thu, 16 Jun 2005 11:07:25 +0200 Subject: [PATCH] Resync with latest version of AI-302 From-SVN: r101079 --- gcc/ada/a-cihase.ads | 113 ++++++++++++++++++++++++------------------- gcc/ada/a-strfix.ads | 1 - gcc/ada/a-stunha.ads | 4 +- gcc/ada/a-szunau.adb | 2 +- gcc/ada/a-szunau.ads | 2 +- 5 files changed, 67 insertions(+), 55 deletions(-) diff --git a/gcc/ada/a-cihase.ads b/gcc/ada/a-cihase.ads index 53ec645be09..893864346e5 100644 --- a/gcc/ada/a-cihase.ads +++ b/gcc/ada/a-cihase.ads @@ -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; + + 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; - diff --git a/gcc/ada/a-strfix.ads b/gcc/ada/a-strfix.ads index bf1a496828d..b85b4078645 100644 --- a/gcc/ada/a-strfix.ads +++ b/gcc/ada/a-strfix.ads @@ -13,7 +13,6 @@ -- -- ------------------------------------------------------------------------------ - with Ada.Strings.Maps; package Ada.Strings.Fixed is diff --git a/gcc/ada/a-stunha.ads b/gcc/ada/a-stunha.ads index b838bcbdcdf..81716555389 100644 --- a/gcc/ada/a-stunha.ads +++ b/gcc/ada/a-stunha.ads @@ -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 -- diff --git a/gcc/ada/a-szunau.adb b/gcc/ada/a-szunau.adb index c022a5b28e3..119f56b7e3d 100644 --- a/gcc/ada/a-szunau.adb +++ b/gcc/ada/a-szunau.adb @@ -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 -- -- -- diff --git a/gcc/ada/a-szunau.ads b/gcc/ada/a-szunau.ads index 6333a1e7459..01e7055403b 100644 --- a/gcc/ada/a-szunau.ads +++ b/gcc/ada/a-szunau.ads @@ -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 -- -- -- -- 2.30.2