📄 composite.hpp
字号:
typename actor_result<H, TupleT>::plain_type,
typename actor_result<I, TupleT>::plain_type
>::type type;
};
//////////////////////////////////
template <typename OperationT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I>
struct composite<OperationT,
A, B, C, D, E, F, G, H, I,
#if PHOENIX_LIMIT > 9
nil_t, nil_t, nil_t,
#if PHOENIX_LIMIT > 12
nil_t, nil_t, nil_t,
#endif
#endif
nil_t // Unused
> {
typedef composite<OperationT, A, B, C, D, E, F, G, H, I> self_t;
template <typename TupleT>
struct result {
typedef typename composite9_result<
OperationT, TupleT, A, B, C, D, E, F, G, H, I
>::type type;
};
composite(OperationT const& op_,
A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
F const& f_, G const& g_, H const& h_, I const& i_)
: op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
f(f_), g(g_), h(h_), i(i_) {}
template <typename TupleT>
typename actor_result<self_t, TupleT>::type
eval(TupleT const& args) const
{
typename actor_result<A, TupleT>::type ra = a.eval(args);
typename actor_result<B, TupleT>::type rb = b.eval(args);
typename actor_result<C, TupleT>::type rc = c.eval(args);
typename actor_result<D, TupleT>::type rd = d.eval(args);
typename actor_result<E, TupleT>::type re = e.eval(args);
typename actor_result<F, TupleT>::type rf = f.eval(args);
typename actor_result<G, TupleT>::type rg = g.eval(args);
typename actor_result<H, TupleT>::type rh = h.eval(args);
typename actor_result<I, TupleT>::type ri = i.eval(args);
return op(ra, rb, rc, rd, re, rf, rg, rh, ri);
}
mutable OperationT op; // operation
A a; B b; C c; D d; E e; F f; G g; H h; I i; // actors
};
#if PHOENIX_LIMIT > 9
///////////////////////////////////////////////////////////////////////////////
//
// composite <10 actors> class
//
///////////////////////////////////////////////////////////////////////////////
template <typename OperationT, typename TupleT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J>
struct composite10_result {
typedef typename OperationT::template result<
typename actor_result<A, TupleT>::plain_type,
typename actor_result<B, TupleT>::plain_type,
typename actor_result<C, TupleT>::plain_type,
typename actor_result<D, TupleT>::plain_type,
typename actor_result<E, TupleT>::plain_type,
typename actor_result<F, TupleT>::plain_type,
typename actor_result<G, TupleT>::plain_type,
typename actor_result<H, TupleT>::plain_type,
typename actor_result<I, TupleT>::plain_type,
typename actor_result<J, TupleT>::plain_type
>::type type;
};
//////////////////////////////////
template <typename OperationT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J>
struct composite<OperationT,
A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,
#if PHOENIX_LIMIT > 12
nil_t, nil_t, nil_t,
#endif
nil_t // Unused
> {
typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J> self_t;
template <typename TupleT>
struct result {
typedef typename composite10_result<
OperationT, TupleT, A, B, C, D, E, F, G, H, I, J
>::type type;
};
composite(OperationT const& op_,
A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
F const& f_, G const& g_, H const& h_, I const& i_, J const& j_)
: op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
f(f_), g(g_), h(h_), i(i_), j(j_) {}
template <typename TupleT>
typename actor_result<self_t, TupleT>::type
eval(TupleT const& args) const
{
typename actor_result<A, TupleT>::type ra = a.eval(args);
typename actor_result<B, TupleT>::type rb = b.eval(args);
typename actor_result<C, TupleT>::type rc = c.eval(args);
typename actor_result<D, TupleT>::type rd = d.eval(args);
typename actor_result<E, TupleT>::type re = e.eval(args);
typename actor_result<F, TupleT>::type rf = f.eval(args);
typename actor_result<G, TupleT>::type rg = g.eval(args);
typename actor_result<H, TupleT>::type rh = h.eval(args);
typename actor_result<I, TupleT>::type ri = i.eval(args);
typename actor_result<J, TupleT>::type rj = j.eval(args);
return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj);
}
mutable OperationT op; // operation
A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; // actors
};
///////////////////////////////////////////////////////////////////////////////
//
// composite <11 actors> class
//
///////////////////////////////////////////////////////////////////////////////
template <typename OperationT, typename TupleT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K>
struct composite11_result {
typedef typename OperationT::template result<
typename actor_result<A, TupleT>::plain_type,
typename actor_result<B, TupleT>::plain_type,
typename actor_result<C, TupleT>::plain_type,
typename actor_result<D, TupleT>::plain_type,
typename actor_result<E, TupleT>::plain_type,
typename actor_result<F, TupleT>::plain_type,
typename actor_result<G, TupleT>::plain_type,
typename actor_result<H, TupleT>::plain_type,
typename actor_result<I, TupleT>::plain_type,
typename actor_result<J, TupleT>::plain_type,
typename actor_result<K, TupleT>::plain_type
>::type type;
};
//////////////////////////////////
template <typename OperationT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K>
struct composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K, nil_t,
#if PHOENIX_LIMIT > 12
nil_t, nil_t, nil_t,
#endif
nil_t // Unused
> {
typedef composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K> self_t;
template <typename TupleT>
struct result {
typedef typename composite11_result<
OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K
>::type type;
};
composite(OperationT const& op_,
A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
K const& k_)
: op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
f(f_), g(g_), h(h_), i(i_), j(j_),
k(k_) {}
template <typename TupleT>
typename actor_result<self_t, TupleT>::type
eval(TupleT const& args) const
{
typename actor_result<A, TupleT>::type ra = a.eval(args);
typename actor_result<B, TupleT>::type rb = b.eval(args);
typename actor_result<C, TupleT>::type rc = c.eval(args);
typename actor_result<D, TupleT>::type rd = d.eval(args);
typename actor_result<E, TupleT>::type re = e.eval(args);
typename actor_result<F, TupleT>::type rf = f.eval(args);
typename actor_result<G, TupleT>::type rg = g.eval(args);
typename actor_result<H, TupleT>::type rh = h.eval(args);
typename actor_result<I, TupleT>::type ri = i.eval(args);
typename actor_result<J, TupleT>::type rj = j.eval(args);
typename actor_result<K, TupleT>::type rk = k.eval(args);
return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk);
}
mutable OperationT op; // operation
A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
K k;// actors
};
///////////////////////////////////////////////////////////////////////////////
//
// composite <12 actors> class
//
///////////////////////////////////////////////////////////////////////////////
template <typename OperationT, typename TupleT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K, typename L>
struct composite12_result {
typedef typename OperationT::template result<
typename actor_result<A, TupleT>::plain_type,
typename actor_result<B, TupleT>::plain_type,
typename actor_result<C, TupleT>::plain_type,
typename actor_result<D, TupleT>::plain_type,
typename actor_result<E, TupleT>::plain_type,
typename actor_result<F, TupleT>::plain_type,
typename actor_result<G, TupleT>::plain_type,
typename actor_result<H, TupleT>::plain_type,
typename actor_result<I, TupleT>::plain_type,
typename actor_result<J, TupleT>::plain_type,
typename actor_result<K, TupleT>::plain_type,
typename actor_result<L, TupleT>::plain_type
>::type type;
};
//////////////////////////////////
template <typename OperationT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K, typename L>
struct composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K, L,
#if PHOENIX_LIMIT > 12
nil_t, nil_t, nil_t,
#endif
nil_t // Unused
> {
typedef composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K, L> self_t;
template <typename TupleT>
struct result {
typedef typename composite12_result<
OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L
>::type type;
};
composite(OperationT const& op_,
A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
K const& k_, L const& l_)
: op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
f(f_), g(g_), h(h_), i(i_), j(j_),
k(k_), l(l_) {}
template <typename TupleT>
typename actor_result<self_t, TupleT>::type
eval(TupleT const& args) const
{
typename actor_result<A, TupleT>::type ra = a.eval(args);
typename actor_result<B, TupleT>::type rb = b.eval(args);
typename actor_result<C, TupleT>::type rc = c.eval(args);
typename actor_result<D, TupleT>::type rd = d.eval(args);
typename actor_result<E, TupleT>::type re = e.eval(args);
typename actor_result<F, TupleT>::type rf = f.eval(args);
typename actor_result<G, TupleT>::type rg = g.eval(args);
typename actor_result<H, TupleT>::type rh = h.eval(args);
typename actor_result<I, TupleT>::type ri = i.eval(args);
typename actor_result<J, TupleT>::type rj = j.eval(args);
typename actor_result<K, TupleT>::type rk = k.eval(args);
typename actor_result<L, TupleT>::type rl = l.eval(args);
return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl);
}
mutable OperationT op; // operation
A a; B b; C c; D d; E e; F f; G g; H h; I i; J j;
K k; L l;// actors
};
#if PHOENIX_LIMIT > 12
///////////////////////////////////////////////////////////////////////////////
//
// composite <13 actors> class
//
///////////////////////////////////////////////////////////////////////////////
template <typename OperationT, typename TupleT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K, typename L, typename M>
struct composite13_result {
typedef typename OperationT::template result<
typename actor_result<A, TupleT>::plain_type,
typename actor_result<B, TupleT>::plain_type,
typename actor_result<C, TupleT>::plain_type,
typename actor_result<D, TupleT>::plain_type,
typename actor_result<E, TupleT>::plain_type,
typename actor_result<F, TupleT>::plain_type,
typename actor_result<G, TupleT>::plain_type,
typename actor_result<H, TupleT>::plain_type,
typename actor_result<I, TupleT>::plain_type,
typename actor_result<J, TupleT>::plain_type,
typename actor_result<K, TupleT>::plain_type,
typename actor_result<L, TupleT>::plain_type,
typename actor_result<M, TupleT>::plain_type
>::type type;
};
//////////////////////////////////
template <typename OperationT,
typename A, typename B, typename C, typename D, typename E,
typename F, typename G, typename H, typename I, typename J,
typename K, typename L, typename M>
struct composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t
> {
typedef composite<OperationT,
A, B, C, D, E, F, G, H, I, J, K, L, M> self_t;
template <typename TupleT>
struct result {
typedef typename composite13_result<
OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M
>::type type;
};
composite(OperationT const& op_,
A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,
F const& f_, G const& g_, H const& h_, I const& i_, J const& j_,
K const& k_, L const& l_, M const& m_)
: op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),
f(f_), g(g_), h(h_), i(i_), j(j_),
k(k_), l(l_), m(m_) {}
template <typename TupleT>
typename actor_result<self_t, TupleT>::type
eval(TupleT const& args) const
{
typename actor_result<A, TupleT>::type ra = a.eval(args);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -