From 6e86701b83e4d081c095747fbf6fa642e717e969 Mon Sep 17 00:00:00 2001 From: Mattia Barbon Date: Sat, 1 May 2004 20:59:17 +0000 Subject: [PATCH] Use new wxHashTable implementation not using keyed wxList when !WXWIN_COMPATIBILITY_24. It is faster. It is almost 100% compatible, too, the only difference being Next() return value type. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27040 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 4 ++++ include/wx/hash.h | 30 +++++++++++++++++++----------- src/common/hash.cpp | 8 +++----- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 53124c555c..3fc742c9d7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -45,6 +45,10 @@ INCOMPATIBLE CHANGES SINCE 2.4.x - wxZlibInputStream is not by default compatible with the output of the 2.4.x version of wxZlibOutputStream. However, there is a compatibilty mode, switched on by passing wxZLIB_24COMPATIBLE to the constructor. +- when WXWIN_COMPATIBILITY_2_4 == 0 wxHashTable uses a new implementation + not using wxList keyed interface (the same used when wxUSE_STL == 1), + the only incompatibility being that Next() returns a wxHashTable::Node* + instead of a wxNode*. wxTaskBarIcon must be explicitly destroyed now, otherwise the application won't exit even though there are no top level windows diff --git a/include/wx/hash.h b/include/wx/hash.h index 4196d68308..851ce62231 100644 --- a/include/wx/hash.h +++ b/include/wx/hash.h @@ -18,12 +18,20 @@ #include "wx/defs.h" +#if !wxUSE_STL && WXWIN_COMPATIBILITY_2_4 + #define wxUSE_OLD_HASH_TABLE 1 +#else + #define wxUSE_OLD_HASH_TABLE 0 +#endif + #if !wxUSE_STL #include "wx/object.h" - #include "wx/list.h" #else class WXDLLIMPEXP_BASE wxObject; #endif +#if wxUSE_OLD_HASH_TABLE + #include "wx/list.h" +#endif #if WXWIN_COMPATIBILITY_2_4 #include "wx/dynarray.h" #endif @@ -43,7 +51,7 @@ // pointers to objects // ---------------------------------------------------------------------------- -#if !wxUSE_STL +#if wxUSE_OLD_HASH_TABLE class WXDLLIMPEXP_BASE wxHashTableBase : public wxObject { @@ -83,7 +91,7 @@ private: DECLARE_NO_COPY_CLASS(wxHashTableBase) }; -#else // if wxUSE_STL +#else // if !wxUSE_OLD_HASH_TABLE #if !defined(wxENUM_KEY_TYPE_DEFINED) #define wxENUM_KEY_TYPE_DEFINED @@ -215,7 +223,7 @@ private: DECLARE_NO_COPY_CLASS(wxHashTableBase) }; -#endif // !wxUSE_STL +#endif // wxUSE_OLD_HASH_TABLE #if !wxUSE_STL @@ -294,13 +302,13 @@ private: #endif // WXWIN_COMPATIBILITY_2_4 -#endif // !wxUSE_STL +#endif // !wxUSE_STL // ---------------------------------------------------------------------------- // for compatibility only // ---------------------------------------------------------------------------- -#if wxUSE_STL +#if !wxUSE_OLD_HASH_TABLE class WXDLLIMPEXP_BASE wxHashTable_Node : public wxHashTableBase_Node { @@ -401,7 +409,7 @@ private: size_t m_currBucket; }; -#else // if !wxUSE_STL +#else // if wxUSE_OLD_HASH_TABLE class WXDLLIMPEXP_BASE wxHashTable : public wxObject { @@ -492,9 +500,9 @@ private: DECLARE_DYNAMIC_CLASS(wxHashTable) }; -#endif +#endif // wxUSE_OLD_HASH_TABLE -#if wxUSE_STL +#if !wxUSE_OLD_HASH_TABLE // defines a new type safe hash table which stores the elements of type eltype // in lists of class listclass @@ -525,7 +533,7 @@ private: DECLARE_NO_COPY_CLASS(hashclass) \ } -#else // if !wxUSE_STL +#else // if wxUSE_OLD_HASH_TABLE #define _WX_DECLARE_HASH(eltype, listclass, hashclass, classexp) \ classexp hashclass : public wxHashTableBase \ @@ -587,7 +595,7 @@ private: DECLARE_NO_COPY_CLASS(hashclass) \ } -#endif +#endif // wxUSE_OLD_HASH_TABLE // this macro is to be used in the user code #define WX_DECLARE_HASH(el, list, hash) \ diff --git a/src/common/hash.cpp b/src/common/hash.cpp index d2a71fa8d3..abcc84f7c8 100644 --- a/src/common/hash.cpp +++ b/src/common/hash.cpp @@ -34,7 +34,7 @@ #include "wx/hash.h" -#if !wxUSE_STL +#if wxUSE_OLD_HASH_TABLE #include #include @@ -724,9 +724,7 @@ void wxHashTable::Clear () m_count = 0; } -#else // if wxUSE_STL - -#include "wx/object.h" +#else // if !wxUSE_OLD_HASH_TABLE wxHashTableBase_Node::wxHashTableBase_Node( long key, void* value, wxHashTableBase* table ) @@ -1083,4 +1081,4 @@ wxHashTable::Node* wxHashTable::Next() return m_curr; } -#endif // wxUSE_STL +#endif // !wxUSE_OLD_HASH_TABLE -- 2.45.2