ltl::ExprNode< A, N > Class Template Reference
[MArray Expression Template Internals]

Node in the expression parse tree. Every expression in ultimately represented by this class. More...

Inherits ltl::_et_parse_base.

List of all members.

Public Types

Public Member Functions


Detailed Description

template<class A, int N>
class ltl::ExprNode< A, N >

Node in the expression parse tree. Every expression in ultimately represented by this class.

This class represents a node in the parse tree of an expression. Any operation or operand is captured as a type ExprNode<Op,N>, where Op represents the operation or operand and N the number of dimensions. This way, there is a single data type ExprNode<> associated with any parse tree element.

The operation or operand Op are of the types ExprLiteralNode ExprBinopNode ExprUnopNode MArrayIter

Like all parse tree elements, this class implements the iterator interface. It forwards all iterator calls to the operation or operand it wraps.


Member Typedef Documentation

template<class A, int N>
typedef A::value_type ltl::ExprNode< A, N >::value_type

the result data type of the parse tree node


Member Enumeration Documentation

template<class A, int N>
anonymous enum

The number of dimensions.

Enumerator:
dims 

template<class A, int N>
anonymous enum

The number of ltl::IndexIter index iterators in all the parse tree below this node.

Enumerator:
numIndexIter 

template<class A, int N>
anonymous enum

Is the whole parse tree below this node vectorizable.

Enumerator:
isVectorizable 


Constructor & Destructor Documentation

template<class A, int N>
ltl::ExprNode< A, N >::ExprNode ( const A &  a  )  [inline]

Constructor.


Member Function Documentation

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

Move all iterators in the parse tree below us forward.

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

Move all iterators in the parse tree below us forward.

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

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

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

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

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

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

compute and return the value of the subexpression in the parse tree below us

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

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

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

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

Storage geometry.

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

true if the innermost stride is unity

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

true if we are conformable with another shape

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

Reset the iterators in the parse tree below us.

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

Return one of the shape objects from the parse tree.

template<class A, int N>
ExprIter<A,N> ltl::ExprNode< A, N >::begin (  )  [inline]

Return an ExprIter.

template<class A, int N>
ExprIter<A,N> ltl::ExprNode< A, N >::end (  )  [inline]

Return an end ExprIter.


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