35#ifndef POOMA_PETE_FOREACHINORDER_H
36#define POOMA_PETE_FOREACHINORDER_H
162template <
class Op,
class VTag>
181template<
class Expr,
class FTag,
class VTag,
class CTag>
187 static Type_t apply(
const Expr &expr,
const FTag &f,
const VTag &v,
190 return Tag_t::apply(expr,f);
198template<
class T,
class FTag,
class VTag,
class CTag>
205 const VTag &v,
const CTag &c)
218template<
class Op,
class A,
class FTag,
class VTag,
232 const VTag &v,
const CTag &c)
252template<
class Op,
class A,
class B,
class FTag,
class VTag,
265 typedef typename Combiner_t::Type_t
Type_t;
268 const VTag &v,
const CTag &c)
280 Type_t val = Combiner_t::combine(left_val, right_val, expr.
operation(), c);
293template<
class Op,
class A,
class B,
class C,
class FTag,
class VTag,
311 const VTag &v,
const CTag &c)
343template<
class A,
class B,
class Op>
DeReference< Left >::Return_t left() const
DeReference< Right >::Return_t right() const
const Op & operation() const
DeReference< Left >::Return_t left() const
DeReference< Right >::Return_t right() const
DeReference< Middle >::Return_t middle() const
const Op & operation() const
DeReference< Child >::Return_t child() const
const Op & operation() const
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
static Type_t combine(const TypeA_t &a, const Op &, const CTag &)
static Type_t combine(A, B, Op, NullTag)
static Type_t combine(const TypeA_t &a, const TypeB_t &b, const TypeC_t &c, const Op &op, const CTag &t)
Combine2< Type1_t, TypeC_t, Op, CTag >::Type_t Type_t
ForEachB_t::Type_t TypeB_t
ForEachInOrder< A, FTag, VTag, CTag > ForEachA_t
TagVisitor< Op, VTag > Visitor_t
Combine2< TypeA_t, TypeB_t, Op, CTag > Combiner_t
ForEachInOrder< B, FTag, VTag, CTag > ForEachB_t
Combiner_t::Type_t Type_t
static Type_t apply(const BinaryNode< Op, A, B > &expr, const FTag &f, const VTag &v, const CTag &c)
ForEachA_t::Type_t TypeA_t
LeafFunctor< T, FTag > Tag_t
static Type_t apply(const Reference< T > &expr, const FTag &f, const VTag &v, const CTag &c)
ForEachInOrder< A, FTag, VTag, CTag > ForEachA_t
Combine3< TypeA_t, TypeB_t, TypeC_t, Op, CTag > Combiner_t
TagVisitor< Op, VTag > Visitor_t
ForEachC_t::Type_t TypeC_t
ForEachB_t::Type_t TypeB_t
static Type_t apply(const TrinaryNode< Op, A, B, C > &expr, const FTag &f, const VTag &v, const CTag &c)
ForEachInOrder< C, FTag, VTag, CTag > ForEachC_t
ForEachInOrder< B, FTag, VTag, CTag > ForEachB_t
ForEachA_t::Type_t TypeA_t
Combiner_t::Type_t Type_t
Combine1< TypeA_t, Op, CTag > Combiner_t
static Type_t apply(const UnaryNode< Op, A > &expr, const FTag &f, const VTag &v, const CTag &c)
Combiner_t::Type_t Type_t
ForEachInOrder< A, FTag, VTag, CTag > ForEachA_t
TagVisitor< Op, VTag > Visitor_t
ForEachA_t::Type_t TypeA_t
static Type_t apply(const Expr &expr, const FTag &f, const VTag &v, const CTag &c)
LeafFunctor< Expr, FTag > Tag_t
const T & reference() const
static void finish(Op, VTag)
static void visit(Op, VTag)
static void start(Op, VTag)
static void center(Op, VTag)