epoc32/include/stdapis/boost/mpl/aux_/value_wknd.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 
     2 #ifndef BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
     3 #define 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 // $Source: /cvsroot/boost/boost/boost/mpl/aux_/value_wknd.hpp,v $
    14 // $Date: 2004/12/20 17:51:57 $
    15 // $Revision: 1.14 $
    16 
    17 #include <boost/mpl/aux_/static_cast.hpp>
    18 #include <boost/mpl/aux_/config/integral.hpp>
    19 #include <boost/mpl/aux_/config/eti.hpp>
    20 #include <boost/mpl/aux_/config/workaround.hpp>
    21 
    22 #if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
    23     || defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
    24 
    25 #   include <boost/mpl/int.hpp>
    26 
    27 namespace boost { namespace mpl { namespace aux {
    28 template< typename C_ > struct value_wknd
    29     : C_
    30 {
    31 };
    32 
    33 #if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
    34 template<> struct value_wknd<int>
    35     : int_<1>
    36 {
    37     using int_<1>::value;
    38 };
    39 #endif
    40 }}}
    41 
    42 
    43 #if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
    44 #   define BOOST_MPL_AUX_VALUE_WKND(C) \
    45     ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
    46 /**/
    47 #    define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) BOOST_MPL_AUX_VALUE_WKND(C)
    48 #else
    49 #   define BOOST_MPL_AUX_VALUE_WKND(C) C
    50 #   define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
    51     ::boost::mpl::aux::value_wknd< C > \
    52 /**/
    53 #endif
    54 
    55 #else // BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
    56 
    57 #   define BOOST_MPL_AUX_VALUE_WKND(C) C
    58 #   define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
    59 
    60 #endif
    61 
    62 #if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
    63 #   define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
    64     BOOST_MPL_AUX_STATIC_CAST(T, C::value) \
    65 /**/
    66 #else
    67 #   define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
    68     BOOST_MPL_AUX_VALUE_WKND(C)::value \
    69 /**/
    70 #endif
    71 
    72 
    73 namespace boost { namespace mpl { namespace aux {
    74 
    75 template< typename T > struct value_type_wknd
    76 {
    77     typedef typename T::value_type type;
    78 };
    79 
    80 #if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
    81 template<> struct value_type_wknd<int>
    82 {
    83     typedef int type;
    84 };
    85 #endif
    86 
    87 }}}
    88 
    89 #endif // BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED