hash_set.h
Go to the documentation of this file.
00001 /* hash_set.h
00002  */
00003 #ifndef HASH_SET_H
00004 #define HASH_SET_H
00005 
00006 #include "osl/stl/hash.h"
00007 #include "osl/stl/pool_allocator.h"
00008 #if (__GNUC__ >= 4 && __GNUC_MINOR__ >=3)
00009 #  include <tr1/unordered_set>
00010 #elif __GNUC__
00011 #  include <ext/hash_set>
00012 #else
00013 #  include <boost/unordered_set.hpp>
00014 #endif
00015 #include <cstddef>
00016 namespace osl
00017 {
00018   namespace stl
00019   {
00020 #if (__GNUC__ >= 4 && __GNUC_MINOR__ >=3)
00021     template<class Value, class HashFun=osl::stl::hash<Value>,
00022              class Equal=std::equal_to<Value> >
00023     struct hash_set
00024       : public std::tr1::unordered_set<Value, HashFun, Equal, pool_allocator<Value> >
00025     {
00026       typedef std::tr1::unordered_set<Value, HashFun, Equal, pool_allocator<Value> > base_t;
00027       hash_set() {}
00028       hash_set(size_t s) : base_t(s)
00029       {
00030       }
00031     };
00032 #elif defined __GNUC__
00033     template<class Value, class HashFun=osl::stl::hash<Value>,
00034              class Equal=std::equal_to<Value> >
00035     struct hash_set
00036       : public __gnu_cxx::hash_set<Value, HashFun, Equal, pool_allocator<Value> >
00037     {
00038       typedef __gnu_cxx::hash_set<Value, HashFun, Equal,
00039                                   pool_allocator<Value> > base_t;
00040       hash_set() {}
00041       hash_set(size_t s) : base_t(s)
00042       {
00043       }
00044     };
00045 #else
00046     template<class Value, class HashFun=osl::stl::hash<Value>,
00047              class Equal=std::equal_to<Value> >
00048     struct hash_set
00049       : public boost::unordered_set<Value, HashFun, Equal, pool_allocator<Value> >
00050     {
00051       typedef boost::unordered_set<Value, HashFun, Equal, pool_allocator<Value> > base_t;
00052       hash_set() {}
00053       hash_set(size_t s) : base_t(s)
00054       {
00055       }
00056     };
00057 #endif
00058   } // namespace stl
00059   using stl::hash_set;
00060 } // namespace stl
00061 
00062 #endif /* HASH_SET_H */
00063 // ;;; Local Variables:
00064 // ;;; mode:c++
00065 // ;;; c-basic-offset:2
00066 // ;;; End:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines