00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __PION_PIONHASHMAP_HEADER__
00011 #define __PION_PIONHASHMAP_HEADER__
00012
00013 #include <boost/functional/hash.hpp>
00014 #include <pion/PionConfig.hpp>
00015
00016
00017 #if defined(PION_HAVE_UNORDERED_MAP)
00018 #include <tr1/unordered_map>
00019 #define PION_HASH_MAP std::tr1::unordered_map
00020 #define PION_HASH_MULTIMAP std::tr1::unordered_multimap
00021 #define PION_HASH_STRING boost::hash<std::string>
00022 #define PION_HASH(TYPE) boost::hash<TYPE>
00023 #elif defined(PION_HAVE_EXT_HASH_MAP)
00024 #include <ext/hash_map>
00025 #if __GNUC__ >= 3
00026 #define PION_HASH_MAP __gnu_cxx::hash_map
00027 #define PION_HASH_MULTIMAP __gnu_cxx::hash_multimap
00028 #else
00029 #define PION_HASH_MAP hash_map
00030 #define PION_HASH_MULTIMAP hash_multimap
00031 #endif
00032 #define PION_HASH_STRING boost::hash<std::string>
00033 #define PION_HASH(TYPE) boost::hash<TYPE>
00034 #elif defined(PION_HAVE_HASH_MAP)
00035 #include <hash_map>
00036 #ifdef _MSC_VER
00037 #define PION_HASH_MAP stdext::hash_map
00038 #define PION_HASH_MULTIMAP stdext::hash_multimap
00039 #define PION_HASH_STRING stdext::hash_compare<std::string, std::less<std::string> >
00040 #define PION_HASH(TYPE) stdext::hash_compare<TYPE, std::less<TYPE> >
00041 #else
00042 #define PION_HASH_MAP hash_map
00043 #define PION_HASH_MULTIMAP hash_multimap
00044 #define PION_HASH_STRING boost::hash<std::string>
00045 #define PION_HASH(TYPE) boost::hash<TYPE>
00046 #endif
00047 #endif
00048
00049
00050 #endif