Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:45:07

0001 /*==============================================================================
0002     Copyright (c) 2001-2010 Joel de Guzman
0003     Copyright (c) 2010 Eric Niebler
0004     Copyright (c) 2010-2011 Thomas Heller
0005 
0006     Distributed under the Boost Software License, Version 1.0. (See accompanying
0007     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008 ==============================================================================*/
0009 #ifndef BOOST_PHOENIX_CORE_ARGUMENT_HPP
0010 #define BOOST_PHOENIX_CORE_ARGUMENT_HPP
0011 
0012 #include <boost/phoenix/core/limits.hpp>
0013 #include <boost/phoenix/core/actor.hpp>
0014 #include <boost/phoenix/core/expression.hpp>
0015 #include <boost/phoenix/core/terminal.hpp>
0016 #include <boost/mpl/int.hpp>
0017 
0018 namespace boost { namespace phoenix
0019 {
0020     ////////////////////////////////////////////////////////////////////////////
0021     //
0022     //  argument
0023     //
0024     //      function for evaluating argument placeholders like: _1
0025     //
0026     ////////////////////////////////////////////////////////////////////////////
0027     
0028     template <int I>
0029     struct argument
0030         //: mpl::int_<I>
0031     {
0032         typedef typename mpl::int_<I>::value_type value_type;
0033         static const value_type value = mpl::int_<I>::value;
0034         
0035         bool operator==(argument) const
0036         {
0037             return true;
0038         }
0039         
0040         template <int I2>
0041         bool operator==(argument<I2>) const
0042         {
0043             return false;
0044         }
0045     };
0046 }}
0047 
0048 namespace boost {
0049     template <int I>
0050     struct is_placeholder<phoenix::argument<I> >
0051         : mpl::int_<I>
0052     {};
0053 }
0054 
0055 namespace boost { namespace phoenix
0056 {
0057     namespace expression
0058     {
0059         template <int I>
0060         struct argument
0061             : expression::terminal<phoenix::argument<I> >
0062         {
0063             typedef typename expression::terminal<phoenix::argument<I> >::type type;
0064             static const type make()
0065             {
0066                 type const e = {{{}}};
0067                 return e;
0068             }
0069         };
0070     }
0071 
0072 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0073 
0074 #include <boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp>
0075 
0076 #else
0077 
0078 #if !defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0079 #include <boost/phoenix/core/detail/argument.hpp>
0080 #else
0081 
0082 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0083 #pragma wave option(preserve: 2, line: 0, output: "detail/cpp03/preprocessed/argument_predefined_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0084 #endif
0085 /*==============================================================================
0086     Copyright (c) 2001-2010 Joel de Guzman
0087     Copyright (c) 2010-2011 Thomas Heller
0088 
0089     Distributed under the Boost Software License, Version 1.0. (See accompanying
0090     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0091 ==============================================================================*/
0092 
0093 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0094 #pragma wave option(preserve: 1)
0095 #endif
0096 
0097 #ifdef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0098 #undef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0099 #define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE
0100 #endif
0101 
0102 #include <boost/phoenix/core/detail/argument.hpp>
0103 
0104 #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE
0105 #define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0106 #undef BOOST_PHOENIX_NO_PREDEFINED_TERIMINALS_RESTORE
0107 #endif
0108 
0109 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0110 #pragma wave option(output: null)
0111 #endif
0112 
0113 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0114 #pragma wave option(preserve: 2, line: 0, output: "detail/cpp03/preprocessed/argument_no_predefined_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0115 #endif
0116 /*==============================================================================
0117     Copyright (c) 2001-2010 Joel de Guzman
0118     Copyright (c) 2010-2011 Thomas Heller
0119 
0120     Distributed under the Boost Software License, Version 1.0. (See accompanying
0121     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0122 ==============================================================================*/
0123 
0124 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0125 #pragma wave option(preserve: 1)
0126 #endif
0127 
0128 #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0129 #define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0130 #define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE
0131 #endif
0132 
0133 #include <boost/phoenix/core/detail/argument.hpp>
0134 
0135 #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE
0136 #undef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
0137 #undef BOOST_PHOENIX_NO_PREDEFINED_TERIMINALS_RESTORE
0138 #endif
0139 
0140 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0141 #pragma wave option(output: null)
0142 #endif
0143 
0144 #endif
0145 
0146 #endif
0147 
0148 }}
0149 
0150 #endif