From cb12337363032e59967b4935e10e8d996f297ca1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 6 May 2011 20:18:42 +0000 Subject: Code cleanup: remove source/kernel module, this wasn't really the kernel of anything, only contained a hash map and functions to pass command line args to the game engine. Moved those to container and BlenderRoutines modules. --- intern/container/CMakeLists.txt | 2 ++ intern/container/CTR_HashedPtr.h | 57 ++++++++++++++++++++++++++++++++++++++++ intern/container/CTR_Map.h | 31 ++++++++++++++++++++++ intern/container/SConscript | 2 +- 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 intern/container/CTR_HashedPtr.h (limited to 'intern/container') diff --git a/intern/container/CMakeLists.txt b/intern/container/CMakeLists.txt index 7f15854e538..7e83acf68ce 100644 --- a/intern/container/CMakeLists.txt +++ b/intern/container/CMakeLists.txt @@ -26,11 +26,13 @@ set(INC . + ../guardedalloc ) set(SRC intern/CTR_List.cpp + CTR_HashedPtr.h CTR_List.h CTR_Map.h CTR_TaggedIndex.h diff --git a/intern/container/CTR_HashedPtr.h b/intern/container/CTR_HashedPtr.h new file mode 100644 index 00000000000..0291535d718 --- /dev/null +++ b/intern/container/CTR_HashedPtr.h @@ -0,0 +1,57 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + +/** \file container/CTR_HashedPtr.h + * \ingroup ctr + */ + +#ifndef CTR_HASHEDPTR_H +#define CTR_HASHEDPTR_H + +#include + +inline unsigned int CTR_Hash(void *inDWord) +{ + size_t key = (size_t)inDWord; + return (unsigned int)(key ^ (key>>4)); +} + +class CTR_HashedPtr +{ + void* m_valptr; +public: + CTR_HashedPtr(void* val) : m_valptr(val) {}; + unsigned int hash() const { return CTR_Hash(m_valptr);}; + inline friend bool operator ==(const CTR_HashedPtr & rhs, const CTR_HashedPtr & lhs) { return rhs.m_valptr == lhs.m_valptr;}; + void *getValue() const { return m_valptr; } +}; + +#endif //CTR_HASHEDPTR_H + diff --git a/intern/container/CTR_Map.h b/intern/container/CTR_Map.h index cbd67fdeaca..1991ec19e3a 100644 --- a/intern/container/CTR_Map.h +++ b/intern/container/CTR_Map.h @@ -55,6 +55,19 @@ public: m_buckets[i] = 0; } } + + CTR_Map(const CTR_Map& map) + { + m_num_buckets = map.m_num_buckets; + m_buckets = new Entry *[m_num_buckets]; + + for (int i = 0; i < m_num_buckets; ++i) { + m_buckets[i] = 0; + + for(Entry *entry = map.m_buckets[i]; entry; entry=entry->m_next) + insert(entry->m_key, entry->m_value); + } + } int size() { int count=0; @@ -87,6 +100,24 @@ public: } return 0; } + + Key* getKey(int index) { + int count=0; + for (int i=0;im_key; + } + bucket = bucket->m_next; + count++; + } + } + return 0; + } void clear() { for (int i = 0; i < m_num_buckets; ++i) { diff --git a/intern/container/SConscript b/intern/container/SConscript index 2d93e90b555..8edf86d7d4a 100644 --- a/intern/container/SConscript +++ b/intern/container/SConscript @@ -2,6 +2,6 @@ Import ('env') sources = env.Glob('intern/*.cpp') -incs = '.' +incs = '. #intern/guardedalloc' env.BlenderLib ('bf_intern_ctr', sources, Split(incs) , [], libtype='intern', priority = 10 ) -- cgit v1.2.3