-- Change to make blender with game engine disabled build without errors
authorKen Hughes <khughes@pacific.edu>
Sun, 27 Nov 2005 03:47:17 +0000 (03:47 +0000)
committerKen Hughes <khughes@pacific.edu>
Sun, 27 Nov 2005 03:47:17 +0000 (03:47 +0000)
   on 64-bit machines.

   This code only seems to be used by the game engine anyway; maybe it's
   only linux which always compiles it regardless of whether game engine is
   enabled?

source/kernel/gen_system/GEN_HashedPtr.cpp
source/kernel/gen_system/GEN_HashedPtr.h

index f852530fa5352cee2b4972b578dacc3456a12ac8..4da40e6696d55a50aef95d12fcc5544267cab1fa 100644 (file)
 #include <config.h>
 #endif
 
-unsigned int GEN_Hash(unsigned int inDWord)
+//
+// Build hash index from pointer.  Even though the final result
+// is a 32-bit integer, use all the bits of the pointer as long
+// as possible.
+//
+
+unsigned int GEN_Hash(void * inDWord)
 {
-       unsigned int key = inDWord;
+#if defined(_WIN64)
+       unsigned __int64 key = (unsigned __int64)inDWord;
+#else
+       unsigned long key = (unsigned long)inDWord;
+#endif
 
        key += ~(key << 16);
        key ^=  (key >>  5);
@@ -47,5 +57,5 @@ unsigned int GEN_Hash(unsigned int inDWord)
        key += ~(key <<  9);
        key ^=  (key >> 17);
 
-       return key;
+       return (unsigned int)(key & 0xffffffff);
 }
index 8fabc9a551646a5e02d489131586e5228643abd0..51a8990540996d3e3bcb895f232f8aa6e405b73a 100644 (file)
 #ifndef __GEN_HASHEDPTR
 #define __GEN_HASHEDPTR
 
-unsigned int GEN_Hash(unsigned int inDWord);
+unsigned int GEN_Hash(void * inDWord);
 
 class GEN_HashedPtr
 {
        void* m_valptr;
 public:
        GEN_HashedPtr(void* val) : m_valptr(val) {};
-       unsigned int hash() const { return GEN_Hash((unsigned int) m_valptr);};
+       unsigned int hash() const { return GEN_Hash(m_valptr);};
        inline friend bool operator ==(const GEN_HashedPtr & rhs, const GEN_HashedPtr & lhs) { return rhs.m_valptr == lhs.m_valptr;};
 };