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

#include <qtnaryoperation.hh>

Inheritance diagram for QtNaryOperation:
QtOperation QtNode QtCaseOp QtConcat QtMintervalOp QtPointOp

Public Member Functions

 QtNaryOperation ()
 default constructor More...
 
 QtNaryOperation (QtNode *node)
 constructor getting the node to the parent More...
 
 QtNaryOperation (QtOperationList *opList)
 constructor getting a list of operands More...
 
virtual ~QtNaryOperation ()
 virtual destructor More...
 
virtual void simplify ()
 simplifies the tree More...
 
virtual bool equalMeaning (QtNode *node)
 test if the two nodes have an equal meaning in the query tree More...
 
virtual QtNodeListgetChilds (QtChildType flag)
 return childs of the node More...
 
virtual std::string getSpelling ()
 creates a unique name for a subexpression More...
 
virtual void setInput (QtOperation *, QtOperation *inputNew)
 method for query rewrite More...
 
virtual QtAreaType getAreaType ()
 tests if the edge to the parent node is of type mdd or atomic More...
 
virtual void optimizeLoad (QtTrimList *trimList)
 optimizing load access More...
 
virtual void printTree (int tab, std::ostream &s=std::cout, QtChildType mode=QT_ALL_NODES)
 debugging method More...
 
virtual void printAlgebraicExpression (std::ostream &s=std::cout)
 prints the algebraic expression More...
 
void setInputs (QtOperationList *opList)
 
QtNode::QtOperationListgetInputs ()
 
- Public Member Functions inherited from QtOperation
 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 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...
 
QtNodeListgetChild (const QtNodeType node, QtChildType flag=QT_DIRECT_CHILDS)
 return childs of a certain class 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...
 
QtNodegetParent () const
 
void setParent (QtNode *node)
 
const ParseInfogetParseInfo ()
 
void setParseInfo (const ParseInfo &info)
 

Protected Member Functions

bool getOperands (QtDataList *inputList, QtDataList *&operandList)
 method for testing and evaluating the input branches 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...
 

Protected Attributes

QtOperationListoperationList
 operation trees More...
 
- Protected Attributes inherited from QtOperation
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...
 

Constructor & Destructor Documentation

QtNaryOperation::QtNaryOperation ( )

default constructor

QtNaryOperation::QtNaryOperation ( QtNode node)

constructor getting the node to the parent

QtNaryOperation::QtNaryOperation ( QtOperationList opList)

constructor getting a list of operands

virtual QtNaryOperation::~QtNaryOperation ( )
virtual

virtual destructor

Member Function Documentation

virtual bool QtNaryOperation::equalMeaning ( QtNode node)
virtual

test if the two nodes have an equal meaning in the query tree

Reimplemented from QtNode.

Reimplemented in QtConcat.

virtual QtAreaType QtNaryOperation::getAreaType ( )
virtual

tests if the edge to the parent node is of type mdd or atomic

Reimplemented from QtNode.

Reimplemented in QtConcat.

virtual QtNodeList* QtNaryOperation::getChilds ( QtChildType  flag)
virtual

return childs of the node

The meaning of a binary operation is equal, iff all operands have the same meaning.

Reimplemented from QtNode.

QtNode::QtOperationList* QtNaryOperation::getInputs ( )
inline
bool QtNaryOperation::getOperands ( QtDataList inputList,
QtDataList *&  operandList 
)
protected

method for testing and evaluating the input branches

virtual std::string QtNaryOperation::getSpelling ( )
virtual

creates a unique name for a subexpression

Reimplemented from QtNode.

Reimplemented in QtConcat.

virtual void QtNaryOperation::optimizeLoad ( QtTrimList trimList)
virtual

optimizing load access

Reimplemented from QtOperation.

virtual void QtNaryOperation::printAlgebraicExpression ( std::ostream &  s = std::cout)
virtual

prints the algebraic expression

Implements QtNode.

Reimplemented in QtCaseOp, QtMintervalOp, QtPointOp, and QtConcat.

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

debugging method

The method deletes the given { trimList} and passes the { optimizeLoad} message with empty triming lists to its input trees.

Implements QtNode.

Reimplemented in QtCaseOp, QtMintervalOp, QtPointOp, and QtConcat.

virtual void QtNaryOperation::setInput ( QtOperation ,
QtOperation inputNew 
)
virtual

method for query rewrite

Reimplemented from QtNode.

void QtNaryOperation::setInputs ( QtOperationList opList)
inline
virtual void QtNaryOperation::simplify ( )
virtual

simplifies the tree

Reimplemented from QtNode.

Reimplemented in QtConcat.

Member Data Documentation

QtOperationList* QtNaryOperation::operationList
protected

operation trees

The method checks if the input branches are valid. Then it passes the evaluate message to its two operands with the { inputList} as argument. The returned results are provided through the arguments { operand1} and { operand2} called by reference. The method returns { true} if the operands are valid, otherwise { false}.


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