Loading...
Searching...
No Matches
casacore::TableExprUDFNode Class Reference
tables package (libcasa_tables) » TaQL_module » TaQL_module_internal_classes

More...

`#include <ExprUDFNode.h>`

## Public Member Functions

| TableExprUDFNode (const std::shared_ptr< UDFBase > &udf, const TableExprInfo &, const TableExprNodeSet &source)
| Constructor.
| ~TableExprUDFNode () override=default
| Destructor.
Bool | isAggregate () const override
| Is the UDF an aggregate function?
TableExprInfo | getTableInfo () const override
| Get the table info.
void | flattenTree (std::vector< TableExprNodeRep * > &) override
| Flatten the node tree by adding the node and its children to the vector.
void | disableApplySelection () override
| Do not apply the selection.
void | applySelection (const Vector< rownr_t > &rownrs) override
| If needed, let the UDF re-create column objects for a selection of rows.
std::shared_ptr< TableExprGroupFuncBase > | makeGroupAggrFunc () override
| UDFs do not need a TableExprGroupFuncBase, so TableExprGroupNull is returned.
Bool | getBool (const TableExprId &id) override
| Functions to get the desired result of a function.
Int64 | getInt (const TableExprId &id) override
Double | getDouble (const TableExprId &id) override
DComplex | getDComplex (const TableExprId &id) override
String | getString (const TableExprId &id) override
TaqlRegex | getRegex (const TableExprId &id) override
MVTime | getDate (const TableExprId &id) override
Public Member Functions inherited from casacore::TableExprNodeMulti
| TableExprNodeMulti (NodeDataType, ValueType, OperType, const TableExprNodeRep &source)
| Constructor.
| ~TableExprNodeMulti () override=default
| Destructor.
void | show (ostream &, uInt indent) const override
| Show the expression tree.
const std::vector< TENShPtr > & | getChildren () const
| Get the child nodes.
Public Member Functions inherited from casacore::TableExprNodeRep
| TableExprNodeRep (NodeDataType, ValueType, OperType, ArgType, ExprType, Int ndim, const IPosition &shape)
| Construct a node.
| TableExprNodeRep (NodeDataType, ValueType, OperType, ExprType)
| This constructor is called from the derived TableExprNodeRep.
| TableExprNodeRep (const TableExprNodeRep &)=default
| Copy constructor.
TableExprNodeRep & | operator= (const TableExprNodeRep &)=delete
| Assign to a TableExprNodeRep cannot be done.
virtual | ~TableExprNodeRep ()=default
| The destructor deletes all the underlying TableExprNode objects.
virtual void | optimize ()
| Try to optimize the node (meant for the right hand of the IN operator).
virtual Double | getUnitFactor () const
| Get the unit conversion factor.
virtual Bool | isLazyAggregate () const
| Is the aggregate function a lazy or an immediate one?
virtual MArray< Bool > | getArrayBool (const TableExprId &id)
| Get an array value for this node in the given row.
virtual MArray< Int64 > | getArrayInt (const TableExprId &id)
virtual MArray< Double > | getArrayDouble (const TableExprId &id)
virtual MArray< DComplex > | getArrayDComplex (const TableExprId &id)
virtual MArray< String > | getArrayString (const TableExprId &id)
virtual MArray< MVTime > | getArrayDate (const TableExprId &id)
void | get (const TableExprId &id, Bool &value)
| General get functions for template purposes.
void | get (const TableExprId &id, Int64 &value)
void | get (const TableExprId &id, Double &value)
void | get (const TableExprId &id, DComplex &value)
void | get (const TableExprId &id, MVTime &value)
void | get (const TableExprId &id, String &value)
void | get (const TableExprId &id, MArray< Bool > &value)
void | get (const TableExprId &id, MArray< Int64 > &value)
void | get (const TableExprId &id, MArray< Double > &value)
void | get (const TableExprId &id, MArray< DComplex > &value)
void | get (const TableExprId &id, MArray< MVTime > &value)
void | get (const TableExprId &id, MArray< String > &value)
MArray< Bool > | getBoolAS (const TableExprId &id)
| Get a value as an array, even it it is a scalar.
MArray< Int64 > | getIntAS (const TableExprId &id)
MArray< Double > | getDoubleAS (const TableExprId &id)
MArray< DComplex > | getDComplexAS (const TableExprId &id)
MArray< String > | getStringAS (const TableExprId &id)
MArray< MVTime > | getDateAS (const TableExprId &id)
virtual Bool | contains (const TableExprId &id, Bool value)
| Does a set or array contain the value?
virtual Bool | contains (const TableExprId &id, Int64 value)
virtual Bool | contains (const TableExprId &id, Double value)
virtual Bool | contains (const TableExprId &id, DComplex value)
virtual Bool | contains (const TableExprId &id, String value)
virtual Bool | contains (const TableExprId &id, MVTime value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< Bool > &value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< Int64 > &value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< Double > &value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< DComplex > &value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< String > &value)
virtual MArray< Bool > | contains (const TableExprId &id, const MArray< MVTime > &value)
rownr_t | nrow ()
| Get the number of rows in the table associated with this expression.
virtual Bool | getColumnDataType (DataType &) const
| Get the data type of the column.
virtual Array< Bool > | getColumnBool (const Vector< rownr_t > &rownrs)
| Get the value of the expression evaluated for the entire column.
virtual Array< uChar > | getColumnuChar (const Vector< rownr_t > &rownrs)
virtual Array< Short > | getColumnShort (const Vector< rownr_t > &rownrs)
virtual Array< uShort > | getColumnuShort (const Vector< rownr_t > &rownrs)
virtual Array< Int > | getColumnInt (const Vector< rownr_t > &rownrs)
virtual Array< uInt > | getColumnuInt (const Vector< rownr_t > &rownrs)
virtual Array< Int64 > | getColumnInt64 (const Vector< rownr_t > &rownrs)
virtual Array< Float > | getColumnFloat (const Vector< rownr_t > &rownrs)
virtual Array< Double > | getColumnDouble (const Vector< rownr_t > &rownrs)
virtual Array< Complex > | getColumnComplex (const Vector< rownr_t > &rownrs)
virtual Array< DComplex > | getColumnDComplex (const Vector< rownr_t > &rownrs)
virtual Array< String > | getColumnString (const Vector< rownr_t > &rownrs)
virtual void | ranges (Block< TableExprRange > &)
| Convert the tree to a number of range vectors which at least select the same things.
NodeDataType | dataType () const
| Get the data type of the derived TableExprNode object.
Bool | isReal () const
| Is the data type real (i.e., integer or double)?
ValueType | valueType () const
| Get the value type.
void | setValueType (ValueType vtype)
| Set the value type.
OperType | operType () const
| Get the operator type.
ExprType | exprType () const
| Get the expression type.
Bool | isConstant () const
| Is the expression a constant?
const Unit & | unit () const
| Get the unit.
void | setUnit (const Unit &unit)
| Set the unit.
const Record & | attributes () const
| Get the attributes.
void | setAttributes (const Record &)
| Set the attributes.
Int | ndim () const
| Get the fixed dimensionality (same for all rows).
const IPosition & | shape () const
| Get the fixed shape (same for all rows).
const IPosition & | shape (const TableExprId &id)
| Get the shape for the given row.
virtual Bool | isDefined (const TableExprId &id)
| Is the value in the given row defined?
virtual void | adaptSetUnits (const Unit &)
| Let a set node convert itself to the given unit.

## Private Attributes

TableExprInfo | itsTableInfo
std::shared_ptr< UDFBase > | itsUDF

## Additional Inherited Members

Public Types inherited from casacore::TableExprNodeRep
enum | NodeDataType { NTBool , NTInt , NTDouble , NTComplex , NTString , NTRegex , NTDate , NTReal , NTDouCom , NTNumeric , NTAny }
| Define the data types of a node. More...
enum | ValueType { VTScalar , VTArray , VTRecord , VTSetElem , VTSet , VTIndex }
| Define the value types. More...
enum | OperType { OtPlus , OtMinus , OtTimes , OtDivide , OtModulo , OtBitAnd , OtBitOr , OtBitXor , OtBitNegate , OtEQ , OtGE , OtGT , OtNE , OtIN , OtAND , OtOR , OtNOT , OtMIN , OtColumn , OtField , OtLiteral , OtFunc , OtSlice , OtUndef , OtRownr , OtRandom }
| Define the operator types. More...
enum | ArgType { NoArr , ArrArr , ArrSca , ScaArr }
| Define the value types of the 2 arguments when arrays are involved. More...
enum | ExprType { Constant , Variable }
| Define (sub-)expression type. More...
Static Public Member Functions inherited from casacore::TableExprNodeMulti
static uInt | checkNumOfArg (uInt low, uInt high, const std::vector< TENShPtr > &nodes)
| Check number of arguments low <= number_of_args <= high It throws an exception if wrong number of arguments.
static NodeDataType | checkDT (Block< Int > &dtypeOper, NodeDataType dtIn, NodeDataType dtOut, const std::vector< TENShPtr > &nodes, Bool dateConv=True)
| Check datatype of nodes and return output type.
Static Public Member Functions inherited from casacore::TableExprNodeRep
static TENShPtr | replaceConstNode (const TENShPtr &node)
| Replace a node with a constant expression by node with its value.
static void | createRange (Block< TableExprRange > &, TableExprNodeColumn *, Double start, Double end)
| Create a range object from a column and an interval.
static void | createRange (Block< TableExprRange > &)
| Create a empty range object.
static String | typeString (NodeDataType)
| Convert a NodeDataType to a string.
static String | typeString (ValueType)
| Convert a ValueType to a string.
Protected Member Functions inherited from casacore::TableExprNodeRep
virtual const IPosition & | getShape (const TableExprId &id)
| Get the shape for the given row.
void | fillExprType (const TableExprNodeRep *node)
| Set expression type to Variable if node is Variable.
Static Protected Member Functions inherited from casacore::TableExprNodeRep
static TENShPtr | convertNode (const TENShPtr &thisNode, Bool convertConstType)
| If the node is constant, it is evaluated and replaced by the appropriate TableExprNodeConst object.
Protected Attributes inherited from casacore::TableExprNodeMulti
std::vector< TENShPtr > | operands_p
Protected Attributes inherited from casacore::TableExprNodeRep
NodeDataType | dtype_p
ValueType | vtype_p
OperType | optype_p
ArgType | argtype_p
ExprType | exprtype_p
Int | ndim_p
IPosition | shape_p
Unit | unit_p
Record | attributes_p

## Detailed Description

Class representing a scalar UDF in select expression

### Intended use:

Internal

### Review Status

Reviewed By:
  UNKNOWN
Date Reviewed:
  before2004/08/25

### Prerequisite

- TableExprNodeMulti

### Synopsis

This class represents a function in a table select tree. The rownumber function is represented by class TableExprNodeRownr. The rowid function is represented by class TableExprNodeRowid. The rand function is represented by class TableExprNodeRandom.

When one wants to add a function to the table selection grammar, the following has to be done:

- Add the function to the enum below.
- Implement the function in the get functions in ExprFuncNode(Array).cc.
- Implement the function in the checkOperands in ExprFuncNode.cc.
- Declare and define the function in ExprNode.h (for C++ binding).
- Add the function to findFunc in TableParse.cc (for TaQL).

Definition at line 73 of file ExprUDFNode.h.

## Constructor & Destructor Documentation

## TableExprUDFNode()

casacore::TableExprUDFNode::TableExprUDFNode | ( | const std::shared_ptr< UDFBase > & | udf,
|  | const TableExprInfo & | ,
|  | const TableExprNodeSet & | source )

Constructor.

## ~TableExprUDFNode()

casacore::TableExprUDFNode::~TableExprUDFNode | ( |  | ) |

override default

Destructor.

## Member Function Documentation

## applySelection()

void casacore::TableExprUDFNode::applySelection | ( | const Vector< rownr_t > & | rownrs | ) |

override virtual

If needed, let the UDF re-create column objects for a selection of rows.

It calls the function recreateColumnObjects.

Reimplemented from casacore::TableExprNodeRep.

## disableApplySelection()

void casacore::TableExprUDFNode::disableApplySelection | ( |  | ) |

override virtual

Do not apply the selection.

Reimplemented from casacore::TableExprNodeRep.

## flattenTree()

void casacore::TableExprUDFNode::flattenTree | ( | std::vector< TableExprNodeRep * > & |  | ) |

override virtual

Flatten the node tree by adding the node and its children to the vector.

Reimplemented from casacore::TableExprNodeMulti.

## getBool()

Bool casacore::TableExprUDFNode::getBool | ( | const TableExprId & | id | ) |

override virtual

Functions to get the desired result of a function.

Reimplemented from casacore::TableExprNodeRep.

## getDate()

MVTime casacore::TableExprUDFNode::getDate | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getDComplex()

DComplex casacore::TableExprUDFNode::getDComplex | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getDouble()

Double casacore::TableExprUDFNode::getDouble | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getInt()

Int64 casacore::TableExprUDFNode::getInt | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getRegex()

TaqlRegex casacore::TableExprUDFNode::getRegex | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getString()

String casacore::TableExprUDFNode::getString | ( | const TableExprId & | id | ) |

override virtual

Reimplemented from casacore::TableExprNodeRep.

## getTableInfo()

TableExprInfo casacore::TableExprUDFNode::getTableInfo | ( |  | ) | const

override virtual

Get the table info.

Reimplemented from casacore::TableExprNodeRep.

## isAggregate()

Bool casacore::TableExprUDFNode::isAggregate | ( |  | ) | const

inline override virtual

Is the UDF an aggregate function?

Reimplemented from casacore::TableExprNodeRep.

Definition at line 86 of file ExprUDFNode.h.

References itsUDF.

## makeGroupAggrFunc()

std::shared_ptr< TableExprGroupFuncBase > casacore::TableExprUDFNode::makeGroupAggrFunc | ( |  | ) |

override virtual

UDFs do not need a TableExprGroupFuncBase, so TableExprGroupNull is returned.

Reimplemented from casacore::TableExprNodeRep.

## Member Data Documentation

## itsTableInfo

TableExprInfo casacore::TableExprUDFNode::itsTableInfo

private

Definition at line 118 of file ExprUDFNode.h.

## itsUDF

std::shared_ptr<UDFBase> casacore::TableExprUDFNode::itsUDF

private

Definition at line 119 of file ExprUDFNode.h.

Referenced by isAggregate().

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

- tables/TaQL/ExprUDFNode.h