コード例 #1
0
ファイル: construct_funop.hpp プロジェクト: 0xDEC0DE8/mcsema
    //  Copyright 2008 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)

    #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
        #pragma wave option(preserve: 1)
    #endif

    #define BOOST_PP_ITERATION_PARAMS_1                                                         \
        (3, (1, BOOST_PROTO_MAX_ARITY, <boost/proto/transform/detail/construct_funop.hpp>))
    #include BOOST_PP_ITERATE()

    #if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
        #pragma wave option(output: null)
    #endif

#else

    #define N BOOST_PP_ITERATION()

    template<BOOST_PP_ENUM_PARAMS(N, typename A)>
    BOOST_FORCEINLINE
    Type operator ()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, &a)) const
    {
        return Type(BOOST_PP_ENUM_PARAMS(N, a));
    }

    #undef N

#endif
コード例 #2
0
ファイル: call_little.hpp プロジェクト: fpelliccioni/pstade
    // 0ary
        template<class Little>
        static Result call(Little& little)
        {
            return little.template call<Result>();
        }

    // 1ary-
        #define  BOOST_PP_ITERATION_PARAMS_1 (3, (1, PSTADE_EGG_MAX_LINEAR_ARITY, <pstade/egg/detail/call_little.hpp>))
        #include BOOST_PP_ITERATE()
    };


} } } // namespace pstade::egg::detail


#endif
#else
#define n BOOST_PP_ITERATION()


    template<class Little, BOOST_PP_ENUM_PARAMS(n, class A)>
    static Result call(Little& little, BOOST_PP_ENUM_BINARY_PARAMS(n, A, & a))
    {
        return little.template call<Result>(BOOST_PP_ENUM_PARAMS(n, a));
    }


#undef n
#endif
コード例 #3
0
ファイル: factory.hpp プロジェクト: 00liujj/dealii
#     undef BOOST_TMP_MACRO
    };

    template< typename Pointer, class Allocator, factory_alloc_propagation AP > 
    class factory<Pointer&, Allocator, AP>;
    // forbidden, would create a dangling reference
}

#     define BOOST_FUNCTIONAL_FACTORY_HPP_INCLUDED
#   else // defined(BOOST_PP_IS_ITERATING)
#     define N BOOST_PP_ITERATION()
#     if !defined(BOOST_TMP_MACRO)
#       if N > 0
    template< BOOST_PP_ENUM_PARAMS(N, typename T) >
#       endif
    inline result_type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const
    {
        return result_type( new value_type(BOOST_PP_ENUM_PARAMS(N,a)) );
    }
#     else // defined(BOOST_TMP_MACRO)
#       if N > 0
    template< BOOST_PP_ENUM_PARAMS(N, typename T) >
#       endif
    inline result_type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const
    {
        value_type* memory = this->get_allocator().allocate(1);
        try
        { 
            return make_pointer(
                new(memory) value_type(BOOST_PP_ENUM_PARAMS(N,a)),
                boost::non_type<factory_alloc_propagation,AP>() );
コード例 #4
0
ファイル: make.hpp プロジェクト: AsherBond/PDAL
          : mpl::true_
        {};

        template<typename R BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
        struct is_applyable<R(*)(BOOST_PP_ENUM_PARAMS(N, A))>
          : mpl::true_
        {};

        template<typename T, typename A>
        struct construct_<proto::expr<T, A, N>, true>
        {
            typedef proto::expr<T, A, N> result_type;

            template<BOOST_PP_ENUM_PARAMS(BOOST_PP_MAX(N, 1), typename A)>
            BOOST_FORCEINLINE
            result_type operator ()(BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_MAX(N, 1), A, &a)) const
            {
                return result_type::make(BOOST_PP_ENUM_PARAMS(BOOST_PP_MAX(N, 1), a));
            }
        };

        template<typename T, typename A>
        struct construct_<proto::basic_expr<T, A, N>, true>
        {
            typedef proto::basic_expr<T, A, N> result_type;

            template<BOOST_PP_ENUM_PARAMS(BOOST_PP_MAX(N, 1), typename A)>
            BOOST_FORCEINLINE
            result_type operator ()(BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_MAX(N, 1), A, &a)) const
            {
                return result_type::make(BOOST_PP_ENUM_PARAMS(BOOST_PP_MAX(N, 1), a));
コード例 #5
0
ファイル: actor.hpp プロジェクト: cboulay/labstreaminglayer
    template <typename F, BOOST_PP_ENUM_PARAMS(N, typename A)>
    struct result<F(BOOST_PP_ENUM_PARAMS(N, A))>
      : eval_result<
            eval_type
          , basic_environment<
                BOOST_PP_ENUM_BINARY_PARAMS(
                    N
                  , typename remove_reference<A
                  , >::type BOOST_PP_INTERCEPT
                )
            >
        >
    {};

    template <BOOST_PP_ENUM_PARAMS(N, typename T)>
    typename result<
        actor(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & BOOST_PP_INTERCEPT))
    >::type
    operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) const
    {
        return eval_type::eval(
            basic_environment<BOOST_PP_ENUM_PARAMS(N, T)>(
                BOOST_PP_ENUM_PARAMS(N, _))
        );
    }

#undef N
#endif // defined(BOOST_PP_IS_ITERATING)


コード例 #6
0
}}

#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif

#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES

#endif
#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
//
//  Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////

#define N BOOST_PP_ITERATION()

    template <BOOST_PP_ENUM_PARAMS(N, typename T)>
    inline tuple<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
    tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
    {
        return tuple<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
            BOOST_PP_ENUM_PARAMS(N, _));
    }

#undef N
#endif // defined(BOOST_PP_IS_ITERATING)

コード例 #7
0
ファイル: locking_helpers.hpp プロジェクト: 41i/hpx
#else  // BOOST_PP_IS_ITERATING

#define N BOOST_PP_ITERATION()

#define HPX_ENUM_MUTEX_ARG(z, n, data)                                        \
    BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) BOOST_PP_CAT(m, n)                     \
    /**/
#define HPX_ENUM_FROM_1_TO_N()                                                \
    BOOST_PP_REPEAT_FROM_TO(1, N, HPX_ENUM_MUTEX_ARG, _)                      \
    /**/

namespace boost { namespace detail
{
    template <BOOST_PP_ENUM_PARAMS(N, typename MutexType)>
    inline unsigned lock_helper(BOOST_PP_ENUM_BINARY_PARAMS(N, MutexType, & m))
    {
        boost::unique_lock<MutexType0> l0(m0);
        if (unsigned const failed_lock = try_lock_internal(HPX_ENUM_FROM_1_TO_N()))
        {
            return failed_lock;
        }
        l0.release();
        return 0;
    }

    template <BOOST_PP_ENUM_PARAMS(N, typename MutexType)>
    inline unsigned try_lock_internal(BOOST_PP_ENUM_BINARY_PARAMS(N, MutexType, & m))
    {
        boost::unique_lock<MutexType0> l0(m0, boost::try_to_lock);
        if (!l0)
コード例 #8
0
#define PHOENIX_CORE_DETAIL_BASIC_ENVIRONMENT_HPP

#include <boost/preprocessor/iterate.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>

#define BOOST_PP_ITERATION_PARAMS_1                                             \
    (3, (3, PHOENIX_ARG_LIMIT,                                                  \
    "boost/spirit/home/phoenix/core/detail/basic_environment.hpp"))
#include BOOST_PP_ITERATE()

#endif

///////////////////////////////////////////////////////////////////////////////
//
//  Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else // defined(BOOST_PP_IS_ITERATING)

#define N BOOST_PP_ITERATION()

    template <BOOST_PP_ENUM_PARAMS(N, typename U)>
    basic_environment(BOOST_PP_ENUM_BINARY_PARAMS(N, U, & _))
        : args_(BOOST_PP_ENUM_PARAMS(N, _)) {}

#undef N
#endif // defined(BOOST_PP_IS_ITERATING)


コード例 #9
0
ファイル: composite.hpp プロジェクト: 00liujj/dealii
#ifndef BOOST_PP_IS_ITERATING
#ifndef PHOENIX_CORE_DETAIL_COMPOSITE_HPP
#define PHOENIX_CORE_DETAIL_COMPOSITE_HPP

#include <boost/preprocessor/iterate.hpp>

#define BOOST_PP_ITERATION_PARAMS_1                                             \
    (3, (3, PHOENIX_COMPOSITE_LIMIT,                                            \
    "boost/spirit/home/phoenix/core/detail/composite.hpp"))
#include BOOST_PP_ITERATE()

#endif

///////////////////////////////////////////////////////////////////////////////
//
//  Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else // defined(BOOST_PP_IS_ITERATING)

#define N BOOST_PP_ITERATION()

    template <BOOST_PP_ENUM_PARAMS(N, typename U)>
    composite(BOOST_PP_ENUM_BINARY_PARAMS(N, U, & _))
        : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}

#undef N
#endif // defined(BOOST_PP_IS_ITERATING)


コード例 #10
0
ファイル: call_little.hpp プロジェクト: himura/p-stade
    };

    BOOST_EGG_CONST((T_call_little), call_little) = {};


} } // namespace boost::egg


#endif
#else
#define n BOOST_PP_ITERATION()


    template<class Little, BOOST_PP_ENUM_PARAMS(n, class A)>
    typename apply_little<Little, BOOST_PP_ENUM_PARAMS(n, A)>::type
    operator()(Little &little, BOOST_PP_ENUM_BINARY_PARAMS(n, A, &a)) const
    {
#if defined(BOOST_EGG_NEEDS_OVERLOADED)
        return details::overloaded_call_little<Little,
            typename apply_little<Little, BOOST_PP_ENUM_PARAMS(n, A)>::type
        >::call(little, BOOST_PP_ENUM_PARAMS(n, a));
#else
        return little.template call<
            typename apply_little<Little, BOOST_PP_ENUM_PARAMS(n, A)>::type
        >(BOOST_PP_ENUM_PARAMS(n, a));
#endif
    }


#undef  n
#endif
コード例 #11
0
ファイル: ambi.hpp プロジェクト: himura/p-stade
#else
            template<class Me, BOOST_EGG_APPLY_DECL_PARAMS(BOOST_PP_INC(n), A)>
            struct BOOST_EGG_APPLY_DECL;

        // as pipe
            typedef X_pipable<Bytag, Bytag> S_pipable;

            template<class Me, BOOST_PP_ENUM_PARAMS(n, class A)>
            struct apply<Me, BOOST_PP_ENUM_PARAMS(n, A)> :
                result_of_<
                    typename result_of_<S_pipable(Base const &)>::type(BOOST_EGG_PP_ENUM_PARAMS_WITH(n, A, &))
                >
            { };

            template<class Re, BOOST_PP_ENUM_PARAMS(n, class A)>
            Re call(BOOST_PP_ENUM_BINARY_PARAMS(n, A, &a)) const
            {
                return S_pipable()(m_base)(BOOST_PP_ENUM_PARAMS(n, a));
            }

        // as function call
            template<class Me, class O, BOOST_PP_ENUM_PARAMS(n, class A)>
            struct apply<Me, O, BOOST_PP_ENUM_PARAMS(n, A)> :
                result_of_<Base const(typename result_of_forward<Bytag, O>::type, BOOST_EGG_FORWARDING_META_ARGS(n, A, Bytag const))>
            { };

            template<class Re, class O, BOOST_PP_ENUM_PARAMS(n, class A)>
            Re call(O &o, BOOST_PP_ENUM_BINARY_PARAMS(n, A, &a)) const
            {
                return m_base(egg::forward<Bytag>(o), BOOST_EGG_FORWARDING_ARGS(n, a, Bytag const));
            }