rasdaman complete source
Public Member Functions | Protected Attributes | List of all members
QtOperation Class Reference

#include <qtoperation.hh>

Inheritance diagram for QtOperation:
QtNode QtBinaryOperation QtConst QtMddCfgOp QtNaryOperation QtUnaryOperation QtVariable QtBinaryInduce QtCondenseOp QtExtend QtIntervalOp QtMarrayOp QtScale QtShift QtCaseOp QtConcat QtMintervalOp QtPointOp QtCondense QtConversion QtDomainOperation QtEncode QtInfo QtIntervalHiOp QtIntervalLoOp QtOId QtSDom QtUnaryInduce

Public Member Functions

 QtOperation ()
 default constructor More...
 
 QtOperation (QtNode *parent)
 constructor getting a pointer to the parent More...
 
virtual QtOperationgetUniqueOrder (const QtNode::QtNodeType ID)
 for associative law More...
 
virtual QtDataevaluate (QtDataList *inputList)
 method for evaluating the node More...
 
virtual void optimizeLoad (QtTrimList *trimList)
 optimizing load access More...
 
virtual const QtTypeElementcheckType (QtTypeTuple *typeTuple=NULL)
 type checking of the subtree More...
 
void printTree (int tab, std::ostream &s, QtChildType mode=QT_ALL_NODES)
 prints the tree More...
 
void printAlgebraicExpression (std::ostream &s)
 prints the algebraic expression More...
 
void setDataStreamType (const QtTypeElement &type)
 
const QtTypeElementgetDataStreamType () const
 
- Public Member Functions inherited from QtNode
 QtNode ()
 default constructor More...
 
 QtNode (QtNode *node)
 constructor getting a pointer to the parent More...
 
virtual ~QtNode ()
 destructor More...
 
bool subtype (enum QtNodeType a, enum QtNodeType b)
 returns weather class b is a subtype of class a More...
 
virtual QtNodeListgetChilds (QtChildType flag)
 return childs of the node More...
 
QtNodeListgetChild (const QtNodeType node, QtChildType flag=QT_DIRECT_CHILDS)
 return childs of a certain class More...
 
virtual bool equalMeaning (QtNode *node)
 test if the two nodes have an equal meaning in a subtree More...
 
virtual std::string getSpelling ()
 creates a unique name for a common subexpression More...
 
virtual QtAreaType getAreaType ()
 test if the edge to the parent node is of type mdd or atomic More...
 
virtual void simplify ()
 simplifies the tree More...
 
virtual const QtNodeType getNodeType () const
 methods for identification of nodes More...
 
enum QtNodeType getQtNodeTypeParent (enum QtNodeType)
 method for pre optimizations (basically load optimization) More...
 
virtual void setInput (QtOperation *inputOld, QtOperation *inputNew)
 
QtNodegetParent () const
 
void setParent (QtNode *node)
 
const ParseInfogetParseInfo ()
 
void setParseInfo (const ParseInfo &info)
 

Protected Attributes

QtTypeElement dataStreamType
 result type of the node More...
 
- Protected Attributes inherited from QtNode
ParseInfo parseInfo
 attribute for parser info More...
 

Additional Inherited Members

- Public Types inherited from QtNode
enum  QtNodeType {
  QT_UNDEFINED_NODE, QT_MDD_ACCESS, QT_OPERATION_ITERATOR, QT_SELECTION_ITERATOR,
  QT_JOIN_ITERATOR, QT_UPDATE, QT_INSERT, QT_DELETE,
  QT_COMMAND, QT_PLUS, QT_MINUS, QT_MULT,
  QT_DIV, QT_OR, QT_AND, QT_XOR,
  QT_IS, QT_EQUAL, QT_NOT_EQUAL, QT_LESS,
  QT_LESS_EQUAL, QT_NOT, QT_SQRT, QT_EXECUTE,
  QT_ONC_STREAM, QT_ITERATOR, QT_OPERATION, QT_BINARY_OPERATION,
  QT_BINARY_INDUCE, QT_GROUP_ITERATOR, QT_IDENT, QT_NARY_OPERATION,
  QT_UNARY_OPERATION, QT_CONDENSE, QT_UNARY_INDUCE, QT_ABS,
  QT_EXP, QT_LOG, QT_LN, QT_SIN,
  QT_COS, QT_TAN, QT_SINH, QT_COSH,
  QT_TANH, QT_ARCSIN, QT_ARCCOS, QT_ARCTAN,
  QT_REALPART, QT_IMAGINARPART, QT_CAST, QT_CSE_ROOT,
  QT_DOMAIN_OPERATION, QT_ALL, QT_SOME, QT_COUNTCELLS,
  QT_ADDCELLS, QT_AVGCELLS, QT_MINCELLS, QT_MAXCELLS,
  QT_MDD_VAR, QT_MDD_STREAM, QT_CONST, QT_DOT,
  QT_CONVERSION, QT_OID, QT_INTERVALOP, QT_MINTERVALOP,
  QT_POINTOP, QT_LO, QT_HI, QT_SDOM,
  QT_SHIFT, QT_EXTEND, QT_MARRAYOP, QT_CONDENSEOP,
  QT_SCALE, QT_OVERLAY, QT_BIT, QT_PYRAMID,
  QT_ENCODE, QT_CONCAT, QT_CASEOP, QT_INFO,
  QT_LAST_NODE_TYPE
}
 
enum  QtAreaType { QT_AREA_MDD, QT_AREA_SCALAR }
 
enum  QtChildType { QT_DIRECT_CHILDS, QT_LEAF_NODES, QT_ALL_NODES }
 
typedef std::vector< QtData * > QtDataList
 list of QtData pointers More...
 
typedef std::vector
< QtTrimElement * > 
QtTrimList
 list of QtTrimData structures More...
 
typedef std::list< QtNode * > QtNodeList
 list of QtNode pointers More...
 
typedef std::vector
< QtOperation * > 
QtOperationList
 list of QtOperation pointers More...
 
- Static Public Attributes inherited from QtNode
static const int QtNodes
 number of QtNodeTypes More...
 
static const QtNodeType QtRoot
 the root of the inheritance tree More...
 
static const QtNodeType QtInheritance [][2]
 the inheritance relations list More...
 
- Protected Member Functions inherited from QtNode
void startTimer (const char *name)
 start node timer (called at evaluation time) More...
 
void stopTimer ()
 stop timer (at end of evaluation) More...
 
void pauseTimer ()
 pause More...
 
void resumeTimer ()
 resume More...
 
std::string getEvaluationTime ()
 get elapsed time if timer was started, returns a string e.g. "15 usecs" More...
 

Constructor & Destructor Documentation

QtOperation::QtOperation ( )

default constructor

QtOperation::QtOperation ( QtNode parent)

constructor getting a pointer to the parent

Member Function Documentation

virtual const QtTypeElement& QtOperation::checkType ( QtTypeTuple typeTuple = NULL)
virtual
virtual QtData* QtOperation::evaluate ( QtDataList inputList)
virtual

method for evaluating the node

The method gives back a node that has the same QtNodeType and has the lowest Spelling of all nodes in the subtree with the same QtNodeType.

Reimplemented in QtMaxCells, QtArctan, QtMinCells, QtArccos, QtArcsin, QtAvgCells, QtImaginarPartOp, QtTanh, QtRealPartOp, QtCosh, QtAddCells, QtCast, QtSinh, QtCountCells, QtTan, QtScale, QtCos, QtDot, QtAll, QtSin, QtSDom, QtLn, QtOr, QtSome, QtExtend, QtNot, QtLog, QtIntervalHiOp, QtCondenseOp, QtConversion, QtAnd, QtDomainOperation, QtExp, QtVariable, QtConst, QtEncode, QtMddCfgOp, QtShift, QtBinaryInduce, QtMarrayOp, QtSqrt, QtIntervalOp, QtInfo, QtMintervalOp, QtOId, QtPointOp, QtCaseOp, QtIntervalLoOp, QtConcat, and QtAbs.

const QtTypeElement& QtOperation::getDataStreamType ( ) const
inline
virtual QtOperation* QtOperation::getUniqueOrder ( const QtNode::QtNodeType  ID)
virtual

for associative law

Reimplemented in QtMult, and QtPlus.

virtual void QtOperation::optimizeLoad ( QtTrimList trimList)
virtual

optimizing load access

The method takes the { inputList} to compute the result of the node which is returned in the end. The semantics is that elements of the { inputList} are not allowed to be used as a result because the { inputList} is freed by the caller. If this is needed, they have to be copied.

Reimplemented in QtScale, QtSDom, QtExtend, QtBinaryOperation, QtNaryOperation, QtUnaryOperation, QtDomainOperation, QtCondenseOp, QtShift, QtVariable, QtConst, QtMddCfgOp, QtCondense, and QtMarrayOp.

void QtOperation::printAlgebraicExpression ( std::ostream &  s)
virtual

prints the algebraic expression

Implements QtNode.

Reimplemented in QtImaginarPartOp, QtRealPartOp, QtCast, QtDot, QtSDom, QtNot, QtIntervalHiOp, QtVariable, QtPointOp, and QtIntervalLoOp.

void QtOperation::printTree ( int  tab,
std::ostream &  s,
QtChildType  mode = QT_ALL_NODES 
)
virtual

prints the tree

The method evaluates constant expressions.

Implements QtNode.

Reimplemented in QtImaginarPartOp, QtRealPartOp, QtCast, QtDot, QtSDom, QtNot, QtIntervalHiOp, QtUnaryOperation, QtVariable, QtPointOp, and QtIntervalLoOp.

void QtOperation::setDataStreamType ( const QtTypeElement type)
inline

The method triggers type checking of the node's subtree. If an error occurs, an exception is raised.

Member Data Documentation

QtTypeElement QtOperation::dataStreamType
protected

result type of the node


The documentation for this class was generated from the following file: