]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/hash.cpp
Right-o, wxConv_local does cause some weird crashes, but things
[wxWidgets.git] / src / common / hash.cpp
index f4139dd5f9d7beadf69ad7de653a1d401e1fc6e3..691d70832cb1c426c7b61bcff44160966c22a35e 100644 (file)
@@ -48,11 +48,18 @@ wxHashTable::wxHashTable (int the_key_type, int size)
 
 wxHashTable::~wxHashTable (void)
 {
+  Destroy();
+}
+
+void wxHashTable::Destroy(void)
+{
+  if (!hash_table) return;
   int i;
   for (i = 0; i < n; i++)
     if (hash_table[i])
       delete hash_table[i];
   delete[] hash_table;
+  hash_table = NULL;
 }
 
 bool wxHashTable::Create(int the_key_type, int size)
@@ -85,7 +92,7 @@ void wxHashTable::Put (long key, long value, wxObject * object)
   hash_table[position]->Append (value, object);
 }
 
-void wxHashTable::Put (long key, const char *value, wxObject * object)
+void wxHashTable::Put (long key, const wxChar *value, wxObject * object)
 {
   // Should NEVER be
   long k = (long) key;
@@ -113,7 +120,7 @@ void wxHashTable::Put (long key, wxObject * object)
   hash_table[position]->Append (k, object);
 }
 
-void wxHashTable::Put (const char *key, wxObject * object)
+void wxHashTable::Put (const wxChar *key, wxObject * object)
 {
   int position = (int) (MakeKey (key) % n);
 
@@ -143,7 +150,7 @@ wxObject *wxHashTable::Get (long key, long value) const
     }
 }
 
-wxObject *wxHashTable::Get (long key, const char *value) const
+wxObject *wxHashTable::Get (long key, const wxChar *value) const
 {
   // Should NEVER be
   long k = (long) key;
@@ -180,7 +187,7 @@ wxObject *wxHashTable::Get (long key) const
     }
 }
 
-wxObject *wxHashTable::Get (const char *key) const
+wxObject *wxHashTable::Get (const wxChar *key) const
 {
   int position = (int) (MakeKey (key) % n);
 
@@ -217,7 +224,7 @@ wxObject *wxHashTable::Delete (long key)
     }
 }
 
-wxObject *wxHashTable::Delete (const char *key)
+wxObject *wxHashTable::Delete (const wxChar *key)
 {
   int position = (int) (MakeKey (key) % n);
   if (!hash_table[position])
@@ -260,7 +267,7 @@ wxObject *wxHashTable::Delete (long key, int value)
     }
 }
 
-wxObject *wxHashTable::Delete (long key, const char *value)
+wxObject *wxHashTable::Delete (long key, const wxChar *value)
 {
   int position = (int) (key % n);
   if (!hash_table[position])
@@ -279,12 +286,12 @@ wxObject *wxHashTable::Delete (long key, const char *value)
     }
 }
 
-long wxHashTable::MakeKey (const char *string) const
+long wxHashTable::MakeKey (const wxChar *string) const
 {
   long int_key = 0;
 
   while (*string)
-    int_key += (unsigned char) *string++;
+    int_key += (wxUChar) *string++;
 
   return int_key;
 }