29#ifndef PETE_PETE_TREENODES_H
30#define PETE_PETE_TREENODES_H
138template<
class Op,
class Child>
158 : op_m(o), child_m(c) { }
179 template<
class OtherChild>
184#if ! defined(MAKES_XLC_BARF)
191 template<
class OtherChild,
class Arg>
197#if ! defined(MAKES_XLC_BARF)
204 template<
class OtherChild,
class Arg1,
class Arg2>
207 const Arg1 &a1,
const Arg2 &a2)
234template<
class Op,
class Left,
class Right>
258 : op_m(o), left_m(l), right_m(r)
266 : left_m(l), right_m(r)
282 template<
class OtherLeft,
class OtherRight>
288#if ! defined(MAKES_XLC_BARF)
295 template<
class OtherLeft,
class OtherRight,
class Arg>
303#if ! defined(MAKES_XLC_BARF)
310 template<
class OtherLeft,
class OtherRight,
class Arg1,
class Arg2>
313 const Arg1 &a1,
const Arg2 &a2)
315 left_m(t.
left(), a1, a2), right_m(t.
right(), a1, a2)
348template<
class Op,
class Left,
class M
iddle,
class Right>
375 TrinaryNode(
const Op &o,
const Left &l,
const Middle &m,
const Right &r)
376 : op_m(o), left_m(l), middle_m(m), right_m(r)
384 : left_m(l), middle_m(m), right_m(r)
401 template<
class OtherLeft,
class OtherM
iddle,
class OtherRight>
408#if ! defined(MAKES_XLC_BARF)
415 template<
class OtherLeft,
class OtherM
iddle,
class OtherRight,
class Arg>
420 right_m(t.
right(), a)
424#if ! defined(MAKES_XLC_BARF)
431 template<
class OtherLeft,
class OtherMiddle,
class OtherRight,
432 class Arg1,
class Arg2>
435 const Arg1 &a1,
const Arg2 &a2)
437 middle_m(t.
middle(), a1, a2) , right_m(t.
right(), a1, a2)
DeReference< Left >::Return_t left() const
BinaryNode(const Op &o, const Left &l, const Right &r)
DeReference< Right >::Return_t right() const
BinaryNode(const Left &l, const Right &r)
const Op & operation() const
BinaryNode(const BinaryNode< Op, Left, Right > &t)
BinaryNode(const BinaryNode< Op, OtherLeft, OtherRight > &t)
DeReference< Left >::Return_t left() const
DeReference< Right >::Return_t right() const
TrinaryNode(const TrinaryNode< Op, OtherLeft, OtherMiddle, OtherRight > &t)
DeReference< Middle >::Return_t middle() const
TrinaryNode(const Left &l, const Middle &m, const Right &r)
const Op & operation() const
TrinaryNode(const TrinaryNode< Op, Left, Middle, Right > &t)
TrinaryNode(const Op &o, const Left &l, const Middle &m, const Right &r)
UnaryNode(const Op &o, const Child &c)
DeReference< Child >::Return_t child() const
UnaryNode(const UnaryNode< Op, Child > &t)
UnaryNode(const Child &c)
UnaryNode(const UnaryNode< Op, OtherChild > &t)
const Op & operation() const
static Return_t apply(const Reference< T > &a)
static Return_t apply(const T &a)
Reference(const T &reference)
const T & reference() const
Reference(const Reference< T > &model)