ltl::ExprBinopNode< A, B, Op, N > Class Template Reference
[MArray Expression Template Internals]

Binary operation node in the expression parse tree. More...

Inherits ltl::_et_parse_base.

List of all members.

Public Types

Public Member Functions


Detailed Description

template<class A, class B, class Op, int N>
class ltl::ExprBinopNode< A, B, Op, N >

Binary operation node in the expression parse tree.

This class represents a binary operation in the parse tree of an expression. It captures the LHS and the RHS of the operation (both of type ExprNode<>) and the operation itself, which which is a functor that encapsulates the operation for the element type of the arrays/expressions involved.

Like all parse tree elements, this class implements the iterator interface. It forwards all iterator movements to the LHS and the RHS, and when dereferenced, evaluates the operation passing the LHS and RHS as parameters.


Member Typedef Documentation

template<class A, class B, class Op, int N>
typedef Op::value_type ltl::ExprBinopNode< A, B, Op, N >::value_type

the result data type is the value_type of the operation


Member Enumeration Documentation

template<class A, class B, class Op, int N>
anonymous enum

The number of dimensions.

Enumerator:
dims 

template<class A, class B, class Op, int N>
anonymous enum

The number of ltl::IndexIter index iterators in the LHS and the RHS.

Enumerator:
numIndexIter 

template<class A, class B, class Op, int N>
anonymous enum

Vectorizable if the LHS and RHS are vectorizable and if the the operation is vectorizable.

Enumerator:
isVectorizable 


Constructor & Destructor Documentation

template<class A, class B, class Op, int N>
ltl::ExprBinopNode< A, B, Op, N >::ExprBinopNode ( const A &  a,
const B &  b 
) [inline]

Constructor.


Member Function Documentation

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::operator++ (  )  [inline]

Implement the iterator interface forwarding all operations to both operands.

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advance (  )  [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceN ( const int  i  )  [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceN ( const int  i,
const int  dim 
) [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceWithStride1 (  )  [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceDim (  )  [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::advanceDim ( const int  cutDim  )  [inline]

template<class A, class B, class Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::operator * (  )  const [inline]

Evaluate by passing the values of the LHS and RHS to the operation.

template<class A, class B, class Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithoutStride ( const int  i  )  const [inline]

template<class A, class B, class Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithStride ( const int  i  )  const [inline]

template<class A, class B, class Op, int N>
value_type ltl::ExprBinopNode< A, B, Op, N >::readWithStride ( const int  i,
const int  dim 
) const [inline]

template<class A, class B, class Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isStorageContiguous (  )  const [inline]

template<class A, class B, class Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isStride1 (  )  const [inline]

template<class A, class B, class Op, int N>
bool ltl::ExprBinopNode< A, B, Op, N >::isConformable ( const Shape< N > &  other  )  const [inline]

template<class A, class B, class Op, int N>
void ltl::ExprBinopNode< A, B, Op, N >::reset (  )  [inline]

template<class A, class B, class Op, int N>
const Shape<N>* ltl::ExprBinopNode< A, B, Op, N >::shape (  )  const [inline]

Return a shape object from the parse tree.


Generated on Wed Mar 11 17:44:36 2009 for LTL by  doxygen 1.5.3