00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef STXXL_HEADER__COMPAT__SHARED_PTR_H_
00016 #define STXXL_HEADER__COMPAT__SHARED_PTR_H_
00017
00018
00019 #include <memory>
00020 #if defined(__GNUG__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) \
00021 && ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40200) \
00022 && (!defined(__ICC) || (__ICC >= 1100))
00023 #include <tr1/memory>
00024 #endif
00025 #if defined(STXXL_BOOST_CONFIG)
00026 #include <boost/shared_ptr.hpp>
00027 #include <boost/make_shared.hpp>
00028 #endif
00029
00030 #include <stxxl/bits/namespace.h>
00031
00032
00033 __STXXL_BEGIN_NAMESPACE
00034
00035 #ifndef STXXL_HAVE_SHARED_PTR
00036 #define STXXL_HAVE_SHARED_PTR 1
00037 #endif
00038
00039 #ifndef STXXL_HAVE_MAKE_SHARED
00040 #define STXXL_HAVE_MAKE_SHARED 1
00041 #endif
00042
00043 namespace compat
00044 {
00045 #if defined(__GXX_EXPERIMENTAL_CXX0X__)
00046 using std::shared_ptr;
00047 using std::make_shared;
00048 using std::allocate_shared;
00049 #elif defined(STXXL_BOOST_CONFIG)
00050 using boost::shared_ptr;
00051 using boost::make_shared;
00052 using boost::allocate_shared;
00053 #elif defined(__GNUG__) && ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40200) \
00054 && (!defined(__ICC) || (__ICC >= 1100))
00055 using std::tr1::shared_ptr;
00056 #undef STXXL_HAVE_MAKE_SHARED
00057 #define STXXL_HAVE_MAKE_SHARED 0
00058 #else
00059
00060 #undef STXXL_HAVE_SHARED_PTR
00061 #define STXXL_HAVE_SHARED_PTR 0
00062 #undef STXXL_HAVE_MAKE_SHARED
00063 #define STXXL_HAVE_MAKE_SHARED 0
00064 #endif
00065 }
00066
00067 __STXXL_END_NAMESPACE
00068
00069 #endif // !STXXL_HEADER__COMPAT__SHARED_PTR_H_
00070