Inherits ltl::_et_parse_base.
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.
typedef A::value_type ltl::ExprNode< A, N >::value_type |
the result data type of the parse tree node
anonymous enum |
The number of ltl::IndexIter index iterators in all the parse tree below this node.
anonymous enum |
ltl::ExprNode< A, N >::ExprNode | ( | const A & | a | ) | [inline] |
Constructor.
void ltl::ExprNode< A, N >::operator++ | ( | ) | [inline] |
Move all iterators in the parse tree below us forward.
void ltl::ExprNode< A, N >::advance | ( | ) | [inline] |
Move all iterators in the parse tree below us forward.
void ltl::ExprNode< A, N >::advanceN | ( | const int | i | ) | [inline] |
void ltl::ExprNode< A, N >::advanceN | ( | const int | i, | |
const int | dim | |||
) | [inline] |
void ltl::ExprNode< A, N >::advanceWithStride1 | ( | ) | [inline] |
void ltl::ExprNode< A, N >::advanceDim | ( | ) | [inline] |
void ltl::ExprNode< A, N >::advanceDim | ( | const int | cutDim | ) | [inline] |
value_type ltl::ExprNode< A, N >::operator * | ( | ) | const [inline] |
compute and return the value of the subexpression in the parse tree below us
value_type ltl::ExprNode< A, N >::readWithoutStride | ( | const int | i | ) | const [inline] |
value_type ltl::ExprNode< A, N >::readWithStride | ( | const int | i | ) | const [inline] |
value_type ltl::ExprNode< A, N >::readWithStride | ( | const int | i, | |
const int | dim | |||
) | const [inline] |
bool ltl::ExprNode< A, N >::isStorageContiguous | ( | ) | const [inline] |
Storage geometry.
bool ltl::ExprNode< A, N >::isStride1 | ( | ) | const [inline] |
true if the innermost stride is unity
bool ltl::ExprNode< A, N >::isConformable | ( | const Shape< N > & | other | ) | const [inline] |
true if we are conformable with another shape
void ltl::ExprNode< A, N >::reset | ( | ) | [inline] |
Reset the iterators in the parse tree below us.
const Shape<N>* ltl::ExprNode< A, N >::shape | ( | ) | const [inline] |
Return one of the shape
objects from the parse tree.
ExprIter<A,N> ltl::ExprNode< A, N >::begin | ( | ) | [inline] |
Return an ExprIter
.
ExprIter<A,N> ltl::ExprNode< A, N >::end | ( | ) | [inline] |
Return an end ExprIter
.