]> 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.
 - 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
 
 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"
 
 
 #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"
 #if !wxUSE_STL
     #include "wx/object.h"
-    #include "wx/list.h"
 #else
     class WXDLLIMPEXP_BASE wxObject;
 #endif
 #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
 #if WXWIN_COMPATIBILITY_2_4
     #include "wx/dynarray.h"
 #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)
 #define wxENUM_KEY_TYPE_DEFINED
 
 #if !defined(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
 
@@ -294,13 +302,13 @@ private:
 
 #endif // WXWIN_COMPATIBILITY_2_4
 
 
 #endif // WXWIN_COMPATIBILITY_2_4
 
-#endif  // !wxUSE_STL
+#endif // !wxUSE_STL
 
 // ----------------------------------------------------------------------------
 // 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
 // in lists of class listclass
 
 // 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)                                      \
     }
 
         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                                \
 
 #define _WX_DECLARE_HASH(eltype, listclass, hashclass, classexp)               \
     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
 #define WX_DECLARE_HASH(el, list, hash) \
 
 // 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"
 
 
 #include "wx/hash.h"
 
-#if !wxUSE_STL
+#if wxUSE_OLD_HASH_TABLE
 
 #include <string.h>
 #include <stdarg.h>
 
 #include <string.h>
 #include <stdarg.h>
@@ -724,9 +724,7 @@ void wxHashTable::Clear ()
   m_count = 0;
 }
 
   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 )
 
 wxHashTableBase_Node::wxHashTableBase_Node( long key, void* value,
                                             wxHashTableBase* table )
@@ -1083,4 +1081,4 @@ wxHashTable::Node* wxHashTable::Next()
     return m_curr;
 }
 
     return m_curr;
 }
 
-#endif // wxUSE_STL
+#endif // !wxUSE_OLD_HASH_TABLE