Added boost header
This commit is contained in:
86
test/external/boost/phoenix/core/arity.hpp
vendored
Normal file
86
test/external/boost/phoenix/core/arity.hpp
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
/*==============================================================================
|
||||
Copyright (c) 2010 Thomas Heller
|
||||
Copyright (c) 2010 Eric Niebler
|
||||
|
||||
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_ARITY_HPP
|
||||
#define BOOST_PHOENIX_CORE_ARITY_HPP
|
||||
|
||||
#include <boost/phoenix/core/limits.hpp>
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/mpl/max.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
#include <boost/phoenix/core/meta_grammar.hpp>
|
||||
#include <boost/phoenix/core/terminal_fwd.hpp>
|
||||
#include <boost/phoenix/support/vector.hpp>
|
||||
#include <boost/proto/matches.hpp>
|
||||
#include <boost/proto/transform/fold.hpp>
|
||||
|
||||
namespace boost { namespace phoenix
|
||||
{
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Calculate the arity of an expression using proto transforms
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct arity;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Expr>
|
||||
struct arity
|
||||
: mpl::int_<
|
||||
evaluator::impl<
|
||||
Expr const&
|
||||
, vector2<
|
||||
mpl::int_<0>
|
||||
, boost::phoenix::arity
|
||||
>&
|
||||
, int
|
||||
>::result_type::value
|
||||
>
|
||||
{};
|
||||
}
|
||||
|
||||
struct arity
|
||||
{
|
||||
template <typename Rule, typename Dummy = void>
|
||||
struct when
|
||||
: proto::fold<
|
||||
proto::_
|
||||
, mpl::int_<0>
|
||||
, proto::make<mpl::max<
|
||||
proto::_state
|
||||
, proto::call<
|
||||
evaluator(
|
||||
proto::_
|
||||
, proto::call<
|
||||
functional::context(_env, _actions)
|
||||
>
|
||||
)
|
||||
>
|
||||
>()>
|
||||
>
|
||||
{};
|
||||
};
|
||||
|
||||
template <typename Dummy>
|
||||
struct arity::when<rule::argument, Dummy>
|
||||
: proto::make<is_placeholder<proto::_value>()>
|
||||
{};
|
||||
|
||||
template <typename Dummy>
|
||||
struct arity::when<rule::custom_terminal, Dummy>
|
||||
: proto::make<mpl::int_<0>()>
|
||||
{};
|
||||
|
||||
template <typename Dummy>
|
||||
struct arity::when<rule::terminal, Dummy>
|
||||
: proto::make<mpl::int_<0>()>
|
||||
{};
|
||||
}}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user