]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/hashmap.h
Set wxABI_VERSION default value to e.g. 29999 so that new APIs can be wrapped
[wxWidgets.git] / include / wx / hashmap.h
index 89601b6ec334c2d615ab2cd8b852f2294ffdb7ba..b1d2f0631423e10a00dba891b70db75f525bfdc2 100644 (file)
@@ -101,6 +101,10 @@ protected:
     {
         return (void **)calloc(sz, sizeof(void*));
     }
     {
         return (void **)calloc(sz, sizeof(void*));
     }
+    static void FreeTable(void *table)
+    {
+        free(table);
+    }
 };
 
 #define _WX_DECLARE_HASHTABLE( VALUE_T, KEY_T, HASH_T, KEY_EX_T, KEY_EQ_T, CLASSNAME, CLASSEXP, SHOULD_GROW, SHOULD_SHRINK ) \
 };
 
 #define _WX_DECLARE_HASHTABLE( VALUE_T, KEY_T, HASH_T, KEY_EX_T, KEY_EQ_T, CLASSNAME, CLASSEXP, SHOULD_GROW, SHOULD_SHRINK ) \
@@ -248,7 +252,7 @@ public: \
     { \
         clear(); \
  \
     { \
         clear(); \
  \
-        free(m_table); \
+        FreeTable(m_table); \
     } \
  \
     hasher hash_funct() { return m_hasher; } \
     } \
  \
     hasher hash_funct() { return m_hasher; } \
@@ -337,7 +341,7 @@ protected: \
     /* returns NULL if not found */ \
     Node** GetNodePtr( const const_key_type& key ) const \
     { \
     /* returns NULL if not found */ \
     Node** GetNodePtr( const const_key_type& key ) const \
     { \
-        unsigned long hash = m_hasher( key ); \
+        unsigned long hash = wx_static_cast(unsigned long, m_hasher( key )); \
         Node** node = &m_table[hash % m_tableBuckets]; \
  \
         while( *node ) \
         Node** node = &m_table[hash % m_tableBuckets]; \
  \
         while( *node ) \
@@ -354,7 +358,7 @@ protected: \
     /* expressing it in terms of GetNodePtr is 5-8% slower :-( */ \
     Node* GetNode( const const_key_type& key ) const \
     { \
     /* expressing it in terms of GetNodePtr is 5-8% slower :-( */ \
     Node* GetNode( const const_key_type& key ) const \
     { \
-        unsigned long hash = m_hasher( key ); \
+        unsigned long hash = wx_static_cast(unsigned long, m_hasher( key )); \
         Node* node = m_table[hash % m_tableBuckets]; \
  \
         while( node ) \
         Node* node = m_table[hash % m_tableBuckets]; \
  \
         while( node ) \
@@ -379,7 +383,7 @@ protected: \
                        this, (_wxHashTable_NodeBase**)m_table, \
                        (BucketFromNode)GetBucketForNode,\
                        (ProcessNode)&DummyProcessNode ); \
                        this, (_wxHashTable_NodeBase**)m_table, \
                        (BucketFromNode)GetBucketForNode,\
                        (ProcessNode)&DummyProcessNode ); \
-        free(srcTable); \
+        FreeTable(srcTable); \
     } \
  \
     /* this must be called _after_ m_table has been cleaned */ \
     } \
  \
     /* this must be called _after_ m_table has been cleaned */ \
@@ -512,12 +516,10 @@ class WXDLLIMPEXP_BASE wxPointerHash
 public:
     wxPointerHash() { }
 
 public:
     wxPointerHash() { }
 
-    // TODO: this might not work well on architectures with 64 bit pointers but
-    //       32 bit longs, we should use % ULONG_MAX there
 #if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
     size_t operator()( const void* k ) const { return (size_t)k; }
 #else
 #if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
     size_t operator()( const void* k ) const { return (size_t)k; }
 #else
-    unsigned long operator()( const void* k ) const { return (unsigned long)wxPtrToULong(k); }
+    wxUIntPtr operator()( const void* k ) const { return wxPtrToUInt(k); }
 #endif
 
     wxPointerHash& operator=(const wxPointerHash&) { return *this; }
 #endif
 
     wxPointerHash& operator=(const wxPointerHash&) { return *this; }