diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-16 08:40:36 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-16 08:40:36 +0000 |
commit | a691a9d823d4df7462ece84f208187705f106dc4 (patch) | |
tree | cc921bbf3ca223a3cdfc91eece877b2fb384002c /gcc/ada | |
parent | 32918d54aa00cacf84b1c4a9ecec29cf2ec2ccdc (diff) | |
download | gcc-a691a9d823d4df7462ece84f208187705f106dc4.tar.gz |
2005-06-14 Pascal Obry <obry@adacore.com>
* g-dynhta.ads, g-dynhta.adb (Reset): Free the table itself after
releasing the items.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101041 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/g-dynhta.adb | 14 | ||||
-rw-r--r-- | gcc/ada/g-dynhta.ads | 16 |
2 files changed, 19 insertions, 11 deletions
diff --git a/gcc/ada/g-dynhta.adb b/gcc/ada/g-dynhta.adb index 5e95a9a56aa..677beafe693 100644 --- a/gcc/ada/g-dynhta.adb +++ b/gcc/ada/g-dynhta.adb @@ -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; diff --git a/gcc/ada/g-dynhta.ads b/gcc/ada/g-dynhta.ads index cea431467ce..9486ab12a72 100644 --- a/gcc/ada/g-dynhta.ads +++ b/gcc/ada/g-dynhta.ads @@ -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 |