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
This commit is contained in:
Mattia Barbon
2004-05-01 20:59:17 +00:00
parent 066f177ced
commit 6e86701b83
3 changed files with 26 additions and 16 deletions

View File

@@ -45,6 +45,10 @@ INCOMPATIBLE CHANGES SINCE 2.4.x
- wxZlibInputStream is not by default compatible with the output of the - wxZlibInputStream is not by default compatible with the output of the
2.4.x version of wxZlibOutputStream. However, there is a compatibilty mode, 2.4.x version of wxZlibOutputStream. However, there is a compatibilty mode,
switched on by passing wxZLIB_24COMPATIBLE to the constructor. 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 wxTaskBarIcon must be explicitly destroyed now, otherwise the application
won't exit even though there are no top level windows won't exit even though there are no top level windows

View File

@@ -18,12 +18,20 @@
#include "wx/defs.h" #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 #if !wxUSE_STL
#include "wx/object.h" #include "wx/object.h"
#include "wx/list.h"
#else #else
class WXDLLIMPEXP_BASE wxObject; class WXDLLIMPEXP_BASE wxObject;
#endif #endif
#if wxUSE_OLD_HASH_TABLE
#include "wx/list.h"
#endif
#if WXWIN_COMPATIBILITY_2_4 #if WXWIN_COMPATIBILITY_2_4
#include "wx/dynarray.h" #include "wx/dynarray.h"
#endif #endif
@@ -43,7 +51,7 @@
// pointers to objects // pointers to objects
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#if !wxUSE_STL #if wxUSE_OLD_HASH_TABLE
class WXDLLIMPEXP_BASE wxHashTableBase : public wxObject class WXDLLIMPEXP_BASE wxHashTableBase : public wxObject
{ {
@@ -83,7 +91,7 @@ private:
DECLARE_NO_COPY_CLASS(wxHashTableBase) DECLARE_NO_COPY_CLASS(wxHashTableBase)
}; };
#else // if wxUSE_STL #else // if !wxUSE_OLD_HASH_TABLE
#if !defined(wxENUM_KEY_TYPE_DEFINED) #if !defined(wxENUM_KEY_TYPE_DEFINED)
#define wxENUM_KEY_TYPE_DEFINED #define wxENUM_KEY_TYPE_DEFINED
@@ -215,7 +223,7 @@ private:
DECLARE_NO_COPY_CLASS(wxHashTableBase) DECLARE_NO_COPY_CLASS(wxHashTableBase)
}; };
#endif // !wxUSE_STL #endif // wxUSE_OLD_HASH_TABLE
#if !wxUSE_STL #if !wxUSE_STL
@@ -300,7 +308,7 @@ private:
// for compatibility only // for compatibility only
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#if wxUSE_STL #if !wxUSE_OLD_HASH_TABLE
class WXDLLIMPEXP_BASE wxHashTable_Node : public wxHashTableBase_Node class WXDLLIMPEXP_BASE wxHashTable_Node : public wxHashTableBase_Node
{ {
@@ -401,7 +409,7 @@ private:
size_t m_currBucket; size_t m_currBucket;
}; };
#else // if !wxUSE_STL #else // if wxUSE_OLD_HASH_TABLE
class WXDLLIMPEXP_BASE wxHashTable : public wxObject class WXDLLIMPEXP_BASE wxHashTable : public wxObject
{ {
@@ -492,9 +500,9 @@ private:
DECLARE_DYNAMIC_CLASS(wxHashTable) 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 // defines a new type safe hash table which stores the elements of type eltype
// in lists of class listclass // in lists of class listclass
@@ -525,7 +533,7 @@ private:
DECLARE_NO_COPY_CLASS(hashclass) \ DECLARE_NO_COPY_CLASS(hashclass) \
} }
#else // if !wxUSE_STL #else // if wxUSE_OLD_HASH_TABLE
#define _WX_DECLARE_HASH(eltype, listclass, hashclass, classexp) \ #define _WX_DECLARE_HASH(eltype, listclass, hashclass, classexp) \
classexp hashclass : public wxHashTableBase \ classexp hashclass : public wxHashTableBase \
@@ -587,7 +595,7 @@ private:
DECLARE_NO_COPY_CLASS(hashclass) \ DECLARE_NO_COPY_CLASS(hashclass) \
} }
#endif #endif // wxUSE_OLD_HASH_TABLE
// this macro is to be used in the user code // this macro is to be used in the user code
#define WX_DECLARE_HASH(el, list, hash) \ #define WX_DECLARE_HASH(el, list, hash) \

View File

@@ -34,7 +34,7 @@
#include "wx/hash.h" #include "wx/hash.h"
#if !wxUSE_STL #if wxUSE_OLD_HASH_TABLE
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
@@ -724,9 +724,7 @@ void wxHashTable::Clear ()
m_count = 0; m_count = 0;
} }
#else // if wxUSE_STL #else // if !wxUSE_OLD_HASH_TABLE
#include "wx/object.h"
wxHashTableBase_Node::wxHashTableBase_Node( long key, void* value, wxHashTableBase_Node::wxHashTableBase_Node( long key, void* value,
wxHashTableBase* table ) wxHashTableBase* table )
@@ -1083,4 +1081,4 @@ wxHashTable::Node* wxHashTable::Next()
return m_curr; return m_curr;
} }
#endif // wxUSE_STL #endif // !wxUSE_OLD_HASH_TABLE