X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/222702b112dcc7bebe018d6f4d66fe469fefd02c..55bfbcb92b41ab1c6a0d490f2f3fcadefc069bb7:/include/wx/hash.h?ds=sidebyside diff --git a/include/wx/hash.h b/include/wx/hash.h index cefc7996bd..5cf258f5d2 100644 --- a/include/wx/hash.h +++ b/include/wx/hash.h @@ -12,17 +12,10 @@ #ifndef _WX_HASH_H__ #define _WX_HASH_H__ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "hash.h" -#endif - #include "wx/defs.h" +#include "wx/string.h" -#if !wxUSE_STL && WXWIN_COMPATIBILITY_2_4 - #define wxUSE_OLD_HASH_TABLE 1 -#else - #define wxUSE_OLD_HASH_TABLE 0 -#endif +#define wxUSE_OLD_HASH_TABLE 0 #if !wxUSE_STL #include "wx/object.h" @@ -32,9 +25,6 @@ #if wxUSE_OLD_HASH_TABLE #include "wx/list.h" #endif -#if WXWIN_COMPATIBILITY_2_4 - #include "wx/dynarray.h" -#endif // the default size of the hash #define wxHASH_SIZE_DEFAULT (1000) @@ -163,7 +153,7 @@ public: typedef wxHashTableBase_Node Node; wxHashTableBase(); - virtual ~wxHashTableBase() { }; + virtual ~wxHashTableBase() { } void Create( wxKeyType keyType = wxKEY_INTEGER, size_t size = wxHASH_SIZE_DEFAULT ); @@ -229,85 +219,6 @@ private: #endif // wxUSE_OLD_HASH_TABLE -#if !wxUSE_STL - -#if WXWIN_COMPATIBILITY_2_4 - -// ---------------------------------------------------------------------------- -// a hash table which stores longs -// ---------------------------------------------------------------------------- - -class WXDLLIMPEXP_BASE wxHashTableLong : public wxObject -{ -public: - wxHashTableLong(size_t size = wxHASH_SIZE_DEFAULT) - { Init(size); } - virtual ~wxHashTableLong(); - - void Create(size_t size = wxHASH_SIZE_DEFAULT); - void Destroy(); - - size_t GetSize() const { return m_hashSize; } - size_t GetCount() const { return m_count; } - - void Put(long key, long value); - long Get(long key) const; - long Delete(long key); - -protected: - void Init(size_t size); - -private: - wxArrayLong **m_values, - **m_keys; - - // the size of array above - size_t m_hashSize; - - // the total number of elements in the hash - size_t m_count; - - // not implemented yet - DECLARE_NO_COPY_CLASS(wxHashTableLong) -}; - -// ---------------------------------------------------------------------------- -// wxStringHashTable: a hash table which indexes strings with longs -// ---------------------------------------------------------------------------- - -class WXDLLIMPEXP_BASE wxStringHashTable : public wxObject -{ -public: - wxStringHashTable(size_t sizeTable = wxHASH_SIZE_DEFAULT); - virtual ~wxStringHashTable(); - - // add a string associated with this key to the table - void Put(long key, const wxString& value); - - // get the string from the key: if not found, an empty string is returned - // and the wasFound is set to false if not NULL - wxString Get(long key, bool *wasFound = NULL) const; - - // remove the item, returning true if the item was found and deleted - bool Delete(long key) const; - - // clean up - void Destroy(); - -private: - wxArrayLong **m_keys; - wxArrayString **m_values; - - // the size of array above - size_t m_hashSize; - - DECLARE_NO_COPY_CLASS(wxStringHashTable) -}; - -#endif // WXWIN_COMPATIBILITY_2_4 - -#endif // !wxUSE_STL - // ---------------------------------------------------------------------------- // for compatibility only // ---------------------------------------------------------------------------- @@ -359,6 +270,9 @@ public: { DoPut( value, lhash, object ); } void Put(const wxChar *value, wxObject *object) { DoPut( value, MakeKey( value ), object ); } + // FIXME-UTF8: have only wxString forms here + void Put(const wxString& value, wxObject *object) + { DoPut( value, MakeKey( value ), object ); } void Put(long lhash, const wxChar *value, wxObject *object) { DoPut( value, lhash, object ); } @@ -369,6 +283,9 @@ public: { return (wxObject*)DoGet( value, lhash ); } wxObject *Get(const wxChar *value) const { return (wxObject*)DoGet( value, MakeKey( value ) ); } + // FIXME-UTF8: have only wxString forms here + wxObject *Get(const wxString& value) const + { return (wxObject*)DoGet( value, MakeKey( value ) ); } wxObject *Get(long lhash, const wxChar *value) const { return (wxObject*)DoGet( value, lhash ); } @@ -379,6 +296,9 @@ public: { return (wxObject*)DoDelete( key, lhash ); } wxObject *Delete(const wxChar *key) { return (wxObject*)DoDelete( key, MakeKey( key ) ); } + // FIXME-UTF8: have only wxString forms here + wxObject *Delete(const wxString& key) + { return (wxObject*)DoDelete( key, MakeKey( key ) ); } wxObject *Delete(long lhash, const wxChar *key) { return (wxObject*)DoDelete( key, lhash ); } @@ -397,8 +317,6 @@ public: size_t GetCount() const { return wxHashTableBase::GetCount(); } protected: - virtual void DoDeleteContents( wxHashTableBase_Node* node ); - // copy helper void DoCopy( const wxHashTable& copy ); @@ -406,6 +324,8 @@ protected: // m_curr to it and m_currBucket to its bucket void GetNextNode( size_t bucketStart ); private: + virtual void DoDeleteContents( wxHashTableBase_Node* node ); + // current node Node* m_curr; @@ -415,6 +335,8 @@ private: #else // if wxUSE_OLD_HASH_TABLE +typedef wxNode wxHashTable_Node; + class WXDLLIMPEXP_BASE wxHashTable : public wxObject { public: @@ -430,7 +352,7 @@ public: wxHashTable(int the_key_type = wxKEY_INTEGER, int size = wxHASH_SIZE_DEFAULT); - ~wxHashTable(); + virtual ~wxHashTable(); // copy ctor and assignment operator wxHashTable(const wxHashTable& table) : wxObject() @@ -529,7 +451,7 @@ private: eltype *Delete(long key) { return (eltype*)DoDelete(key, key); } \ eltype *Delete(long lhash, long key) \ { return (eltype*)DoDelete(key, lhash); } \ - protected: \ + private: \ virtual void DoDeleteContents( wxHashTableBase_Node* node ) \ { delete (eltype*)node->GetData(); } \ \ @@ -546,7 +468,7 @@ private: size_t size = wxHASH_SIZE_DEFAULT) \ { Create(keyType, size); } \ \ - ~hashclass() { Destroy(); } \ + virtual ~hashclass() { Destroy(); } \ \ void Put(long key, long val, eltype *data) { DoPut(key, val, data); } \ void Put(long key, eltype *data) { DoPut(key, key, data); } \