casacore
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
casacore::TableExprUDFNode Class Reference

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< TableExprGroupFuncBasemakeGroupAggrFunc () 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.
 
TableExprNodeRepoperator= (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< BoolgetArrayBool (const TableExprId &id)
 Get an array value for this node in the given row.
 
virtual MArray< Int64getArrayInt (const TableExprId &id)
 
virtual MArray< DoublegetArrayDouble (const TableExprId &id)
 
virtual MArray< DComplex > getArrayDComplex (const TableExprId &id)
 
virtual MArray< StringgetArrayString (const TableExprId &id)
 
virtual MArray< MVTimegetArrayDate (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< BoolgetBoolAS (const TableExprId &id)
 Get a value as an array, even it it is a scalar.
 
MArray< Int64getIntAS (const TableExprId &id)
 
MArray< DoublegetDoubleAS (const TableExprId &id)
 
MArray< DComplex > getDComplexAS (const TableExprId &id)
 
MArray< StringgetStringAS (const TableExprId &id)
 
MArray< MVTimegetDateAS (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< Boolcontains (const TableExprId &id, const MArray< Bool > &value)
 
virtual MArray< Boolcontains (const TableExprId &id, const MArray< Int64 > &value)
 
virtual MArray< Boolcontains (const TableExprId &id, const MArray< Double > &value)
 
virtual MArray< Boolcontains (const TableExprId &id, const MArray< DComplex > &value)
 
virtual MArray< Boolcontains (const TableExprId &id, const MArray< String > &value)
 
virtual MArray< Boolcontains (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< BoolgetColumnBool (const Vector< rownr_t > &rownrs)
 Get the value of the expression evaluated for the entire column.
 
virtual Array< uChargetColumnuChar (const Vector< rownr_t > &rownrs)
 
virtual Array< ShortgetColumnShort (const Vector< rownr_t > &rownrs)
 
virtual Array< uShortgetColumnuShort (const Vector< rownr_t > &rownrs)
 
virtual Array< IntgetColumnInt (const Vector< rownr_t > &rownrs)
 
virtual Array< uIntgetColumnuInt (const Vector< rownr_t > &rownrs)
 
virtual Array< Int64getColumnInt64 (const Vector< rownr_t > &rownrs)
 
virtual Array< FloatgetColumnFloat (const Vector< rownr_t > &rownrs)
 
virtual Array< DoublegetColumnDouble (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< StringgetColumnString (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 Unitunit () const
 Get the unit.
 
void setUnit (const Unit &unit)
 Set the unit.
 
const Recordattributes () const
 Get the attributes.
 
void setAttributes (const Record &)
 Set the attributes.
 
Int ndim () const
 Get the fixed dimensionality (same for all rows).
 
const IPositionshape () const
 Get the fixed shape (same for all rows).
 
const IPositionshape (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< UDFBaseitsUDF
 

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 IPositiongetShape (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< TENShPtroperands_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

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:

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 ( )
overridedefault

Destructor.

Member Function Documentation

◆ applySelection()

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

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 ( )
overridevirtual

Do not apply the selection.

Reimplemented from casacore::TableExprNodeRep.

◆ flattenTree()

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

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)
overridevirtual

Functions to get the desired result of a function.

Reimplemented from casacore::TableExprNodeRep.

◆ getDate()

MVTime casacore::TableExprUDFNode::getDate ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getDComplex()

DComplex casacore::TableExprUDFNode::getDComplex ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getDouble()

Double casacore::TableExprUDFNode::getDouble ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getInt()

Int64 casacore::TableExprUDFNode::getInt ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getRegex()

TaqlRegex casacore::TableExprUDFNode::getRegex ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getString()

String casacore::TableExprUDFNode::getString ( const TableExprId id)
overridevirtual

Reimplemented from casacore::TableExprNodeRep.

◆ getTableInfo()

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

Get the table info.

Reimplemented from casacore::TableExprNodeRep.

◆ isAggregate()

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

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 ( )
overridevirtual

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: