casacore
|
#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 |
![]() | |
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. | |
![]() | |
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? The default implementation returns True (because all UDF aggregate functions have to be lazy). | |
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? The default implementation assumes the set is a single scalar, thus tests if it is equal to the given 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? The default implementation returns True. | |
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 | |
![]() | |
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 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 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. | |
![]() | |
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 TENShPtr | convertNode (const TENShPtr &thisNode, Bool convertConstType) |
If the node is constant, it is evaluated and replaced by the appropriate TableExprNodeConst object. | |
![]() | |
std::vector< TENShPtr > | operands_p |
![]() | |
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 |
Class representing a scalar UDF in select expression
Internal
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:
Definition at line 73 of file ExprUDFNode.h.
casacore::TableExprUDFNode::TableExprUDFNode | ( | const std::shared_ptr< UDFBase > & | udf, |
const TableExprInfo & | , | ||
const TableExprNodeSet & | source | ||
) |
Constructor.
|
overridedefault |
Destructor.
If needed, let the UDF re-create column objects for a selection of rows.
It calls the function recreateColumnObjects.
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Do not apply the selection.
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Flatten the node tree by adding the node and its children to the vector.
Reimplemented from casacore::TableExprNodeMulti.
|
overridevirtual |
Functions to get the desired result of a function.
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Reimplemented from casacore::TableExprNodeRep.
|
overridevirtual |
Get the table info.
Reimplemented from casacore::TableExprNodeRep.
|
inlineoverridevirtual |
Is the UDF an aggregate function?
Reimplemented from casacore::TableExprNodeRep.
Definition at line 86 of file ExprUDFNode.h.
References itsUDF.
|
overridevirtual |
UDFs do not need a TableExprGroupFuncBase, so TableExprGroupNull is returned.
Reimplemented from casacore::TableExprNodeRep.
|
private |
Definition at line 118 of file ExprUDFNode.h.
|
private |
Definition at line 119 of file ExprUDFNode.h.
Referenced by isAggregate().