exmat::TmpAnalyserBinNode< Exp_, TmpList, TarConType, ForceUseTmp, IsRootNode, NeedTmp_ > Struct Template Reference

The TmpAnalyserBinNode class. More...

#include <ExpTmp.h>

List of all members.

Public Types

typedef IF< IsRootNode==int(true), TarConType, typename
Exp::temp_type >::RET 
temp_type
 The container type of this temporary.
typedef IF< IsLLeaf, LeafeNode<
typename Exp::left_type >,
typename IF< IsLUna, TmpAnalyserUnaNode<
typename Exp::left_type,
TmpList, TarConType, ForceUseTmp,
false, LNeedTmp >, TmpAnalyserBinNode<
typename Exp::left_type,
TmpList, TarConType, ForceUseTmp,
false, LNeedTmp > >::RET
>::RET 
left_child
 The left child node.
typedef IF< IsRLeaf, LeafeNode<
typename Exp::right_type >,
typename IF< IsRUna, TmpAnalyserUnaNode<
typename Exp::right_type,
lTL, TarConType, ForceUseTmp,
false, RNeedTmp >, TmpAnalyserBinNode<
typename Exp::right_type,
lTL, TarConType, ForceUseTmp,
false, RNeedTmp > >::RET
>::RET 
right_child
 The right child node.
typedef IF< NeedTmp_, temp_type,
Mat< typename RefillBinExp<
typename Exp::rep_type, typename
left_child::node_exp::rep_type,
typename right_child::node_exp::rep_type
>::RET, EmptyErrorChecker
> >::RET 
node_exp
typedef IF< NeedTmp_, RRed_list,
rTL >::RET 
tmp_list
 The temporary list computed down to this node from the root.
enum  {
  Forced = ForceUseTmp::RET, IsLinearExp = Exp::IsLinear , IsLBin = IsDerivedFrom<typename Exp::left_type , IsRBin = IsDerivedFrom<typename Exp::right_type ,
  IsLUna = IsDerivedFrom<typename Exp::left_type , IsRUna = IsDerivedFrom<typename Exp::right_type , LNeedTmp, RNeedTmp,
  IsLLeaf, IsRLeaf, IsDynamicTmp = (Exp::ROWS == 0) || (Exp::COLS == 0)
}

Static Public Member Functions

template<class Tag>
static void print (Tag)
 Print information, static debugging.
template<class TInst, class TargetCon, class TarConIndex>
static void ass_root (const Exp &exp, TInst &tmpInst, TargetCon &tCon, TarConIndex)
 The root function that will called directly from parseExp_inner.
getNodeObj
Create a node object

template<class TInst, class TargetCon, class TarConIndex>
static const node_expgetNodeObj (const Exp &exp, TInst &tmpInst, TargetCon &tCon, Int2Type< 0+2 *1 >, TarConIndex)
 Create a binary tmp node.
template<class TInst, class TargetCon, class TarConIndex>
static const node_exp getNodeObj (const Exp &exp, TInst &tmpInst, TargetCon &tCon, Int2Type< 0+2 *0 >, TarConIndex)
 Create a binary node.


Detailed Description

template<class Exp_, class TmpList, class TarConType, class ForceUseTmp, int IsRootNode, bool NeedTmp_>
struct exmat::TmpAnalyserBinNode< Exp_, TmpList, TarConType, ForceUseTmp, IsRootNode, NeedTmp_ >

The TmpAnalyserBinNode class.

TmpAnalyserBinNode is the main class that do the temporary analysis on an expression. It represent a binary node in the expression tree.


Member Typedef Documentation

template<class Exp_, class TmpList, class TarConType, class ForceUseTmp, int IsRootNode, bool NeedTmp_>
typedef IF< NeedTmp_, temp_type, Mat< typename RefillBinExp< typename Exp::rep_type, typename left_child::node_exp::rep_type, typename right_child::node_exp::rep_type>::RET, EmptyErrorChecker > >::RET exmat::TmpAnalyserBinNode< Exp_, TmpList, TarConType, ForceUseTmp, IsRootNode, NeedTmp_ >::node_exp
 

The expression type of this node after analysis

Note:
Not applicable on leaf nodes


Member Enumeration Documentation

template<class Exp_, class TmpList, class TarConType, class ForceUseTmp, int IsRootNode, bool NeedTmp_>
anonymous enum
 

Enumerator:
Forced  Indicate this node should use temp.
IsLinearExp  Indicate this node is a linear expression.
IsLBin  Indicate the left child node is a binary node.
IsRBin  Indicate the right child node is a binary node.
IsLUna  Indicate the left child node is an unary node.
IsRUna  Indicate the right child node is an unary node.
LNeedTmp  Compute left child node need temporary or not.
RNeedTmp  Compute right child node need temporary or not.
IsLLeaf  Check the left child node is a leaf node or not.
IsRLeaf  Check the right child node is a leaf node or not.
IsDynamicTmp  Is the temp of this node dynamic?


The documentation for this struct was generated from the following file:
Generated on Sat May 6 23:12:04 2006 for Exmat by  doxygen 1.4.6-NO