|
Blender
V2.59
|
00001 /* 00002 * $Id: KX_HashedPtr.cpp 35168 2011-02-25 13:31:23Z jesterking $ 00003 * ***** BEGIN GPL LICENSE BLOCK ***** 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License 00007 * as published by the Free Software Foundation; either version 2 00008 * of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software Foundation, 00017 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 * 00019 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00020 * All rights reserved. 00021 * 00022 * The Original Code is: all of this file. 00023 * 00024 * Contributor(s): none yet. 00025 * 00026 * ***** END GPL LICENSE BLOCK ***** 00027 */ 00028 00034 #include "KX_HashedPtr.h" 00035 00036 unsigned int KX_Hash(void * inDWord) 00037 { 00038 #if defined(_WIN64) 00039 unsigned __int64 key = (unsigned __int64)inDWord; 00040 #else 00041 unsigned long key = (unsigned long)inDWord; 00042 #endif 00043 00044 key += ~(key << 16); 00045 key ^= (key >> 5); 00046 key += (key << 3); 00047 key ^= (key >> 13); 00048 key += ~(key << 9); 00049 key ^= (key >> 17); 00050 00051 return (unsigned int)(key & 0xffffffff); 00052 } 00053 00054 00055 CHashedPtr::CHashedPtr(void* val) : m_valptr(val) 00056 { 00057 } 00058 00059 00060 00061 unsigned int CHashedPtr::hash() const 00062 { 00063 return KX_Hash(m_valptr); 00064 }