You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
150 lines
4.5 KiB
150 lines
4.5 KiB
/*============================================================================== |
|
Copyright (c) 2001-2010 Joel de Guzman |
|
Copyright (c) 2010 Eric Niebler |
|
Copyright (c) 2010-2011 Thomas Heller |
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying |
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
|
==============================================================================*/ |
|
#ifndef BOOST_PHOENIX_CORE_ARGUMENT_HPP |
|
#define BOOST_PHOENIX_CORE_ARGUMENT_HPP |
|
|
|
#include <boost/phoenix/core/limits.hpp> |
|
#include <boost/phoenix/core/actor.hpp> |
|
#include <boost/phoenix/core/expression.hpp> |
|
#include <boost/phoenix/core/terminal.hpp> |
|
#include <boost/mpl/int.hpp> |
|
|
|
namespace boost { namespace phoenix |
|
{ |
|
//////////////////////////////////////////////////////////////////////////// |
|
// |
|
// argument |
|
// |
|
// function for evaluating argument placeholders like: _1 |
|
// |
|
//////////////////////////////////////////////////////////////////////////// |
|
|
|
template <int I> |
|
struct argument |
|
//: mpl::int_<I> |
|
{ |
|
typedef typename mpl::int_<I>::value_type value_type; |
|
static const value_type value = mpl::int_<I>::value; |
|
|
|
bool operator==(argument) const |
|
{ |
|
return true; |
|
} |
|
|
|
template <int I2> |
|
bool operator==(argument<I2>) const |
|
{ |
|
return false; |
|
} |
|
}; |
|
}} |
|
|
|
namespace boost { |
|
template <int I> |
|
struct is_placeholder<phoenix::argument<I> > |
|
: mpl::int_<I> |
|
{}; |
|
} |
|
|
|
namespace boost { namespace phoenix |
|
{ |
|
namespace expression |
|
{ |
|
template <int I> |
|
struct argument |
|
: expression::terminal<phoenix::argument<I> > |
|
{ |
|
typedef typename expression::terminal<phoenix::argument<I> >::type type; |
|
static const type make() |
|
{ |
|
type const e = {{{}}}; |
|
return e; |
|
} |
|
}; |
|
} |
|
|
|
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES) |
|
|
|
#include <boost/phoenix/core/preprocessed/argument.hpp> |
|
|
|
#else |
|
|
|
#if !defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#include <boost/phoenix/core/detail/argument.hpp> |
|
#else |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/argument_predefined_" BOOST_PHOENIX_LIMIT_STR ".hpp") |
|
#endif |
|
/*============================================================================== |
|
Copyright (c) 2001-2010 Joel de Guzman |
|
Copyright (c) 2010-2011 Thomas Heller |
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying |
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
|
==============================================================================*/ |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(preserve: 1) |
|
#endif |
|
|
|
#ifdef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#undef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE |
|
#endif |
|
|
|
#include <boost/phoenix/core/detail/argument.hpp> |
|
|
|
#ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE |
|
#define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#undef BOOST_PHOENIX_NO_PREDEFINED_TERIMINALS_RESTORE |
|
#endif |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(output: null) |
|
#endif |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/argument_no_predefined_" BOOST_PHOENIX_LIMIT_STR ".hpp") |
|
#endif |
|
/*============================================================================== |
|
Copyright (c) 2001-2010 Joel de Guzman |
|
Copyright (c) 2010-2011 Thomas Heller |
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying |
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
|
==============================================================================*/ |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(preserve: 1) |
|
#endif |
|
|
|
#ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#define BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE |
|
#endif |
|
|
|
#include <boost/phoenix/core/detail/argument.hpp> |
|
|
|
#ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS_RESTORE |
|
#undef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS |
|
#undef BOOST_PHOENIX_NO_PREDEFINED_TERIMINALS_RESTORE |
|
#endif |
|
|
|
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) |
|
#pragma wave option(output: null) |
|
#endif |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
}} |
|
|
|
#endif
|
|
|