X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e67bfc7a40d674037d7b0b5d5b57a9d062c2ddf..d2f5093319b09251870da78e5578eec55942a531:/src/common/hash.cpp?ds=sidebyside diff --git a/src/common/hash.cpp b/src/common/hash.cpp index 330f4b990a..4c6ad97c6d 100644 --- a/src/common/hash.cpp +++ b/src/common/hash.cpp @@ -29,12 +29,15 @@ #include #include -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxHashTable, wxObject) -#endif wxHashTable::wxHashTable (int the_key_type, int size) { + n = 0; + hash_table = (wxList**) NULL; + Create(the_key_type, size); + m_count = 0; +/* n = size; current_position = -1; current_node = (wxNode *) NULL; @@ -44,6 +47,7 @@ wxHashTable::wxHashTable (int the_key_type, int size) int i; for (i = 0; i < size; i++) hash_table[i] = (wxList *) NULL; +*/ } wxHashTable::~wxHashTable (void) @@ -64,13 +68,13 @@ void wxHashTable::Destroy(void) bool wxHashTable::Create(int the_key_type, int size) { + Destroy(); + n = size; current_position = -1; current_node = (wxNode *) NULL; key_type = the_key_type; - if (hash_table) - delete[] hash_table; hash_table = new wxList *[size]; int i; for (i = 0; i < size; i++) @@ -109,6 +113,7 @@ void wxHashTable::Put (long key, long value, wxObject * object) hash_table[position] = new wxList (wxKEY_INTEGER); hash_table[position]->Append (value, object); + m_count++; } void wxHashTable::Put (long key, const wxChar *value, wxObject * object) @@ -123,6 +128,7 @@ void wxHashTable::Put (long key, const wxChar *value, wxObject * object) hash_table[position] = new wxList (wxKEY_INTEGER); hash_table[position]->Append (value, object); + m_count++; } void wxHashTable::Put (long key, wxObject * object) @@ -137,6 +143,7 @@ void wxHashTable::Put (long key, wxObject * object) hash_table[position] = new wxList (wxKEY_INTEGER); hash_table[position]->Append (k, object); + m_count++; } void wxHashTable::Put (const wxChar *key, wxObject * object) @@ -147,6 +154,7 @@ void wxHashTable::Put (const wxChar *key, wxObject * object) hash_table[position] = new wxList (wxKEY_STRING); hash_table[position]->Append (key, object); + m_count++; } wxObject *wxHashTable::Get (long key, long value) const @@ -236,6 +244,7 @@ wxObject *wxHashTable::Delete (long key) { wxObject *data = node->Data (); delete node; + m_count--; return data; } else @@ -255,6 +264,7 @@ wxObject *wxHashTable::Delete (const wxChar *key) { wxObject *data = node->Data (); delete node; + m_count--; return data; } else @@ -279,6 +289,7 @@ wxObject *wxHashTable::Delete (long key, int value) { wxObject *data = node->Data (); delete node; + m_count--; return data; } else @@ -298,6 +309,7 @@ wxObject *wxHashTable::Delete (long key, const wxChar *value) { wxObject *data = node->Data (); delete node; + m_count--; return data; } else @@ -372,5 +384,6 @@ void wxHashTable::Clear (void) if (hash_table[i]) hash_table[i]->Clear (); } + m_count = 0; }