Index: g-dynhta.ads =================================================================== RCS file: /cvs/gcc/gcc/gcc/ada/g-dynhta.ads,v retrieving revision 1.1 diff -u -p -r1.1 g-dynhta.ads --- g-dynhta.ads 21 Oct 2003 13:42:00 -0000 1.1 +++ g-dynhta.ads 15 Jun 2005 15:47:03 -0000 @@ -1,12 +1,12 @@ ------------------------------------------------------------------------------ -- -- --- GNAT RUNTIME COMPONENTS -- +-- GNAT RUN-TIME COMPONENTS -- -- -- -- G N A T . D Y N A M I C _ H T A B L E S -- -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2003 Ada Core Technologies, Inc. -- +-- Copyright (C) 1995-2005 AdaCore -- -- -- -- 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- -- @@ -103,13 +103,13 @@ package GNAT.Dynamic_HTables is Nil : constant Instance; procedure Reset (T : in out Instance); - -- Resets the hash table by setting all its elements to Null_Ptr. The - -- effect is to clear the hash table so that it can be reused. For the + -- Resets the hash table by releasing all memory associated with + -- it. The hash table can safely be reused after this call. For the -- most common case where Elmt_Ptr is an access type, and Null_Ptr is -- null, this is only needed if the same table is reused in a new -- context. If Elmt_Ptr is other than an access type, or Null_Ptr is - -- other than null, then Reset must be called before the first use - -- of the hash table. + -- other than null, then Reset must be called before the first use of + -- the hash table. procedure Set (T : in out Instance; E : Elmt_Ptr); -- Insert the element pointer in the HTable @@ -177,7 +177,9 @@ package GNAT.Dynamic_HTables is -- associated element. procedure Reset (T : in out Instance); - -- Removes and frees all elements in the table + -- Releases all memory associated with the table. The table can be + -- reused after this call (it is automatically allocated on the first + -- access to the table). function Get (T : Instance; K : Key) return Element; -- Returns the Element associated with a key or No_Element if the Index: g-dynhta.adb =================================================================== RCS file: /cvs/gcc/gcc/gcc/ada/g-dynhta.adb,v retrieving revision 1.2 diff -u -p -r1.2 g-dynhta.adb --- g-dynhta.adb 6 Jul 2004 13:57:30 -0000 1.2 +++ g-dynhta.adb 15 Jun 2005 15:47:03 -0000 @@ -1,12 +1,12 @@ ------------------------------------------------------------------------------ -- -- --- GNAT RUNTIME COMPONENTS -- +-- GNAT RUN-TIME COMPONENTS -- -- -- -- G N A T . D Y N A M I C _ H T A B L E S -- -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2004 Ada Core Technologies, Inc. -- +-- Copyright (C) 2002-2005 AdaCore -- -- -- -- 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- -- @@ -32,6 +32,7 @@ ------------------------------------------------------------------------------ with Ada.Unchecked_Deallocation; + package body GNAT.Dynamic_HTables is ------------------- @@ -179,6 +180,9 @@ package body GNAT.Dynamic_HTables is ----------- procedure Reset (T : in out Instance) is + procedure Free is + new Ada.Unchecked_Deallocation (Instance_Data, Instance); + begin if T = null then return; @@ -187,6 +191,8 @@ package body GNAT.Dynamic_HTables is for J in T.Table'Range loop T.Table (J) := Null_Ptr; end loop; + + Free (T); end Reset; --------- @@ -205,6 +211,7 @@ package body GNAT.Dynamic_HTables is Set_Next (E, T.Table (Index)); T.Table (Index) := E; end Set; + end Static_HTable; ------------------- @@ -264,7 +271,6 @@ package body GNAT.Dynamic_HTables is function Get_Next (T : Instance) return Element is Tmp : constant Elmt_Ptr := Tab.Get_Next (Tab.Instance (T)); - begin if Tmp = null then return No_Element; @@ -322,7 +328,6 @@ package body GNAT.Dynamic_HTables is procedure Set (T : in out Instance; K : Key; E : Element) is Tmp : constant Elmt_Ptr := Tab.Get (Tab.Instance (T), K); - begin if Tmp = null then Tab.Set (Tab.Instance (T), new Element_Wrapper'(K, E, null)); @@ -339,6 +344,7 @@ package body GNAT.Dynamic_HTables is begin E.Next := Next; end Set_Next; + end Simple_HTable; end GNAT.Dynamic_HTables;