summaryrefslogtreecommitdiffstats
path: root/o3d/base/cross
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/base/cross')
-rw-r--r--o3d/base/cross/std_hash.h165
1 files changed, 0 insertions, 165 deletions
diff --git a/o3d/base/cross/std_hash.h b/o3d/base/cross/std_hash.h
deleted file mode 100644
index ceac439..0000000
--- a/o3d/base/cross/std_hash.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2009, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-// This file declares STL hash map classes in a cross-compiler way, providing a
-// GCC-compatible (not MSVC) interface.
-
-#ifndef O3D_BASE_CROSS_STD_HASH_H_
-#define O3D_BASE_CROSS_STD_HASH_H_
-
-#include <build/build_config.h>
-
-#if defined(COMPILER_MSVC)
-#include <hash_map>
-#include <hash_set>
-namespace o3d {
-namespace base {
-
-struct PortableHashBase {
- // These two public members are required by msvc. 4 and 8 are the
- // default values.
- static const size_t bucket_size = 4;
- static const size_t min_buckets = 8;
-};
-
-template <typename Key>
-struct hash;
-
-// These are missing from MSVC.
-template<> struct hash<int> {
- size_t operator()(int n) const {
- return static_cast<size_t>(n);
- }
-};
-
-template<> struct hash<unsigned int> {
- size_t operator()(unsigned int n) const {
- return static_cast<size_t>(n);
- }
-};
-
-template<typename T> struct hash<T*> {
- size_t operator()(T* t) const {
- return reinterpret_cast<size_t>(t);
- }
-};
-
-// If the 3rd template parameter of the GNU interface (KeyEqual) is
-// omitted, then we know that it's using the == operator, so we can
-// safely use the < operator.
-//
-// If the third parameter is specified, then we get a compile time
-// error, and we know we have to go back and add some #ifdefs.
-template <typename Key, typename Hash>
-struct HashAndLessOperator : PortableHashBase {
- bool operator()(const Key& a, const Key& b) const {
- return a < b;
- }
- size_t operator()(const Key& key) const {
- return hasher_(key);
- }
- Hash hasher_;
-};
-
-template <class Key, class Hash = hash<Key> >
-class hash_set : public stdext::hash_set<Key, HashAndLessOperator<Key, Hash> > {
- public:
- hash_set() {}
- explicit hash_set(int buckets) {}
- typedef std::equal_to<Key> key_equal;
- size_type bucket_count() const {
- return size() / bucket_size;
- }
-};
-
-template <class Key, class Val, class Hash = hash<Key> >
-class hash_map : public stdext::hash_map<
- Key, Val, HashAndLessOperator<Key, Hash> > {
- public:
- hash_map() {}
- explicit hash_map(int buckets) {}
- typedef std::equal_to<Key> key_equal;
- size_type bucket_count() const {
- return size() / bucket_size;
- }
-};
-
-template <class Key, class Hash = hash<Key> >
-class hash_multiset : public stdext::hash_multiset<
- Key, HashAndLessOperator<Key, Hash> > {
- public:
- hash_multiset() {}
- explicit hash_multiset(int buckets) {}
- typedef std::equal_to<Key> key_equal;
- size_type bucket_count() const {
- return size() / bucket_size;
- }
-};
-
-template <class Key, class Val, class Hash = hash<Key> >
-class hash_multimap : public stdext::hash_multimap<
- Key, Val, HashAndLessOperator<Key, Hash> > {
- public:
- hash_multimap() {}
- explicit hash_multimap(int buckets) {}
- typedef std::equal_to<Key> key_equal;
- size_type bucket_count() const {
- return size() / bucket_size;
- }
-};
-
-} // namespace base
-} // namespace o3d
-#elif defined COMPILER_GCC
-#include <ext/hash_map>
-#include <ext/hash_set>
-#include <tr1/functional>
-namespace __gnu_cxx {
-template <class T> struct hash<T*> {
- size_t operator() (const T* x) const {
- return hash<size_t>()(reinterpret_cast<size_t>(x));
- }
-};
-} // namespace __gnu_cxx
-
-namespace o3d {
-namespace base {
-using __gnu_cxx::hash_map;
-using __gnu_cxx::hash_multimap;
-using __gnu_cxx::hash_set;
-using __gnu_cxx::hash_multiset;
-using __gnu_cxx::hash;
-} // namespace base
-} // namespace o3d
-#endif // COMPILER_MSVC
-
-#endif // O3D_BASE_CROSS_STD_HASH_H_