fixing stuff
[dyninst.git] / dynutil / h / dyn_detail / boost / mpl / aux_ / value_wknd.hpp
1
2 #ifndef DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
3 #define DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
4
5 // Copyright Aleksey Gurtovoy 2000-2004
6 //
7 // Distributed under the Boost Software License, Version 1.0. 
8 // (See accompanying file LICENSE_1_0.txt or copy at 
9 // http://www.boost.org/LICENSE_1_0.txt)
10 //
11 // See http://www.boost.org/libs/mpl for documentation.
12
13 // $Id: value_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14 // $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
15 // $Revision: 49267 $
16
17 #include <dyn_detail/boost/mpl/aux_/static_cast.hpp>
18 #include <dyn_detail/boost/mpl/aux_/config/integral.hpp>
19 #include <dyn_detail/boost/mpl/aux_/config/eti.hpp>
20 #include <dyn_detail/boost/mpl/aux_/config/workaround.hpp>
21
22 #if defined(DYN_DETAIL_BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
23     || defined(DYN_DETAIL_BOOST_MPL_CFG_MSVC_60_ETI_BUG)
24
25 #   include <dyn_detail/boost/mpl/int.hpp>
26
27 namespace dyn_detail {
28 namespace boost { namespace mpl { namespace aux {
29 template< typename C_ > struct value_wknd
30     : C_
31 {
32 };
33
34 #if defined(DYN_DETAIL_BOOST_MPL_CFG_MSVC_60_ETI_BUG)
35 template<> struct value_wknd<int>
36     : int_<1>
37 {
38     using int_<1>::value;
39 };
40 #endif
41 }}}
42 }
43
44 #if !defined(DYN_DETAIL_BOOST_MPL_CFG_MSVC_60_ETI_BUG)
45 #   define DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND(C) \
46     ::dyn_detail::DYN_DETAIL_BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
47 /**/
48 #    define DYN_DETAIL_BOOST_MPL_AUX_MSVC_VALUE_WKND(C) DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND(C)
49 #else
50 #   define DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND(C) C
51 #   define DYN_DETAIL_BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
52     ::dyn_detail::boost::mpl::aux::value_wknd< C > \
53 /**/
54 #endif
55
56 #else // DYN_DETAIL_BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
57
58 #   define DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND(C) C
59 #   define DYN_DETAIL_BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
60
61 #endif
62
63 #if DYN_DETAIL_BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
64 #   define DYN_DETAIL_BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
65     DYN_DETAIL_BOOST_MPL_AUX_STATIC_CAST(T, C::value) \
66 /**/
67 #else
68 #   define DYN_DETAIL_BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
69     DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND(C)::value \
70 /**/
71 #endif
72
73
74 namespace dyn_detail {
75 namespace boost { namespace mpl { namespace aux {
76
77 template< typename T > struct value_type_wknd
78 {
79     typedef typename T::value_type type;
80 };
81
82 #if defined(DYN_DETAIL_BOOST_MPL_CFG_MSVC_ETI_BUG)
83 template<> struct value_type_wknd<int>
84 {
85     typedef int type;
86 };
87 #endif
88
89 }}}
90 }
91
92 #endif // DYN_DETAIL_BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED