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

#include <qtbinaryoperation.hh>

Inheritance diagram for QtBinaryOperation:
QtOperation QtNode QtBinaryInduce QtCondenseOp QtExtend QtIntervalOp QtMarrayOp QtScale QtShift QtAnd QtBit QtDiv QtEqual QtIs QtLess QtLessEqual QtMinus QtMult QtNotEqual QtOr QtOverlay QtPlus QtXor

Public Member Functions

 QtBinaryOperation ()
 default constructor More...
 
 QtBinaryOperation (QtNode *node)
 constructor getting the node to the parent More...
 
 QtBinaryOperation (QtOperation *input1, QtOperation *input2)
 constructor getting pointers to its operands More...
 
virtual ~QtBinaryOperation ()
 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 QtAreaType getAreaType ()
 test if the edge to the parent node is of type mdd or atomic More...
 
virtual void setInput (QtOperation *inputOld, QtOperation *inputNew)
 method for query rewrite 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 bool isCommutative () const
 returns commutativity information (by default, an operation IS commutative) More...
 
void setInput1 (QtOperation *input)
 
void setInput2 (QtOperation *input)
 
QtOperationgetInput1 ()
 
QtOperationgetInput2 ()
 
- 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, QtData *&operand1, QtData *&operand2)
 method for testing and evaluating the input branches More...
 
bool getOperand (QtDataList *inputList, QtData *&operand1, int number)
 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

QtOperationinput1
 first operation operand More...
 
QtOperationinput2
 second operation operand 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

QtBinaryOperation::QtBinaryOperation ( )

default constructor

QtBinaryOperation::QtBinaryOperation ( QtNode node)

constructor getting the node to the parent

QtBinaryOperation::QtBinaryOperation ( QtOperation input1,
QtOperation input2 
)

constructor getting pointers to its operands

virtual QtBinaryOperation::~QtBinaryOperation ( )
virtual

virtual destructor

Member Function Documentation

virtual bool QtBinaryOperation::equalMeaning ( QtNode node)
virtual

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

Reimplemented from QtNode.

Reimplemented in QtCondenseOp.

virtual QtAreaType QtBinaryOperation::getAreaType ( )
virtual

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

Reimplemented from QtNode.

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

return childs of the node

The meaning of a binary operation is equal, iff both operands have the same meaning. In case of a commutative operation, the operands can be switched.

Reimplemented from QtNode.

Reimplemented in QtCondenseOp.

QtOperation* QtBinaryOperation::getInput1 ( )
inline
QtOperation* QtBinaryOperation::getInput2 ( )
inline
bool QtBinaryOperation::getOperand ( QtDataList inputList,
QtData *&  operand1,
int  number 
)
protected

method for testing and evaluating the input branches

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} it the operands are valid, otherwise { false}.

bool QtBinaryOperation::getOperands ( QtDataList inputList,
QtData *&  operand1,
QtData *&  operand2 
)
protected

method for testing and evaluating the input branches

virtual std::string QtBinaryOperation::getSpelling ( )
virtual

creates a unique name for a subexpression

Reimplemented from QtNode.

Reimplemented in QtCondenseOp.

virtual bool QtBinaryOperation::isCommutative ( ) const
virtual

returns commutativity information (by default, an operation IS commutative)

Reimplemented in QtBit, QtOverlay, QtLessEqual, QtDiv, QtLess, QtScale, QtMinus, QtExtend, QtCondenseOp, QtShift, QtIntervalOp, and QtMarrayOp.

virtual void QtBinaryOperation::optimizeLoad ( QtTrimList trimList)
virtual

optimizing load access

Reimplemented from QtOperation.

Reimplemented in QtScale, QtExtend, QtCondenseOp, QtShift, and QtMarrayOp.

virtual void QtBinaryOperation::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. The method is rewritten by some subclasses.

Implements QtNode.

Reimplemented in QtBit, QtOverlay, QtNotEqual, QtLessEqual, QtDiv, QtLess, QtMult, QtScale, QtEqual, QtMinus, QtXor, QtPlus, QtOr, QtExtend, QtCondenseOp, QtAnd, QtShift, QtMarrayOp, QtIntervalOp, and QtIs.

virtual void QtBinaryOperation::setInput ( QtOperation inputOld,
QtOperation inputNew 
)
inlinevirtual

method for query rewrite

Reimplemented from QtNode.

Reimplemented in QtCondenseOp.

void QtBinaryOperation::setInput1 ( QtOperation input)
inline
void QtBinaryOperation::setInput2 ( QtOperation input)
inline
virtual void QtBinaryOperation::simplify ( )
virtual

simplifies the tree

Reimplemented from QtNode.

Reimplemented in QtCondenseOp.

Member Data Documentation

QtOperation* QtBinaryOperation::input1
protected

first operation operand

The method checks if the by number specified input branch si valid. Then it passes the evaluate message to the operand with the { inputList} as argument. The returned result are provided through the argument { operand} called by reference. The method returns { true} it the operand is valid, otherwise { false}.

QtOperation* QtBinaryOperation::input2
protected

second operation operand


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