]> git.saurik.com Git - wxWidgets.git/commitdiff
added copy ctor to wxHashTable
authorVáclav Slavík <vslavik@fastmail.fm>
Wed, 27 Oct 1999 23:33:05 +0000 (23:33 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Wed, 27 Oct 1999 23:33:05 +0000 (23:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/hash.h
src/common/hash.cpp

index ec71b9b8c1b95f84f301dc9d7885f06f49d505ee..4634f96313b6f3d25a5d81d575619295655f81e8 100644 (file)
@@ -41,6 +41,11 @@ class WXDLLEXPORT wxHashTable: public wxObject
   wxHashTable(int the_key_type = wxKEY_INTEGER, int size = 1000);
   ~wxHashTable(void);
   
+  // copy ctor and assignment operator
+  wxHashTable(const wxHashTable& table) { DoCopy(table); }
+  wxHashTable& operator=(const wxHashTable& table) { Clear(); DoCopy(table); return *this; }
+  void DoCopy(const wxHashTable& table);
+  
   void Destroy(void);  // Robert Roebling
 
   bool Create(int the_key_type = wxKEY_INTEGER, int size = 1000);
index 691d70832cb1c426c7b61bcff44160966c22a35e..330f4b990a33f9589189a48cfc66fb76abfcfe70 100644 (file)
@@ -78,6 +78,25 @@ bool wxHashTable::Create(int the_key_type, int size)
   return TRUE;
 }
 
+
+void wxHashTable::DoCopy(const wxHashTable& table)
+{
+  n = table.n;
+  current_position = table.current_position;
+  current_node = NULL; // doesn't matter - Next() will reconstruct it
+  key_type = table.key_type;
+
+  hash_table = new wxList *[n];
+  for (int i = 0; i < n; i++) {
+    if (table.hash_table[i] == NULL)
+      hash_table[i] = NULL;
+    else {
+      hash_table[i] = new wxList(key_type);
+      *(hash_table[i]) = *(table.hash_table[i]);
+    }
+  }
+}
+
 void wxHashTable::Put (long key, long value, wxObject * object)
 {
   // Should NEVER be