]> git.saurik.com Git - wxWidgets.git/commitdiff
Use new wxHashTable implementation not using keyed wxList
authorMattia Barbon <mbarbon@cpan.org>
Sat, 1 May 2004 20:59:17 +0000 (20:59 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sat, 1 May 2004 20:59:17 +0000 (20:59 +0000)
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
include/wx/hash.h
src/common/hash.cpp

index 53124c555c420192d609ba0252a10403c3d81053..3fc742c9d7272a2940d5e1b016f016a10e0e3a47 100644 (file)
@@ -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
index 4196d68308f1222a1ca85a3834614032b4e3f9e0..851ce62231b77d1c6234da2046c2715725b3a79b 100644 (file)
 
 #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) \
index d2a71fa8d31d35bda0606aeb2ef36f3b12d0c739..abcc84f7c8cdfd2e06251467c6745bc274caec7e 100644 (file)
@@ -34,7 +34,7 @@
 
 #include "wx/hash.h"
 
-#if !wxUSE_STL
+#if wxUSE_OLD_HASH_TABLE
 
 #include <string.h>
 #include <stdarg.h>
@@ -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