casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
casa::VirtualTaQLColumn Class Reference

Virtual scalar column using TaQL. More...

#include <VirtualTaQLColumn.h>

Inheritance diagram for casa::VirtualTaQLColumn:
casa::VirtualColumnEngine casa::DataManagerColumn casa::DataManager

List of all members.

Public Member Functions

 VirtualTaQLColumn (const String &expr)
 Construct it with the given TaQL expression.
 VirtualTaQLColumn (const Record &spec)
 Construct it with the given specification.
virtual ~VirtualTaQLColumn ()
 Destructor is mandatory.
virtual DataManagerclone () const
 Clone the engine object.
virtual Record dataManagerSpec () const
 Get the data manager specification.
virtual String dataManagerType () const
 Return the type name of the engine.
const Stringexpression () const
 Return the TaQL expression used.
virtual int dataType () const
 Functions to return column info.
virtual Bool isWritable () const
 Test if data can be put into this column.
virtual uInt ndim (uInt rownr)
 Get the dimensionality of the item in the given row.
virtual IPosition shape (uInt rownr)
 Get the shape of the item in the given row.
virtual Bool isShapeDefined (uInt rownr)
 Is the value shape defined in the given row? By default it returns True.

Static Public Member Functions

static String className ()
 Return the name of the class.
static void registerClass ()
 Register the class name and the static makeObject "constructor".
static DataManagermakeObject (const String &dataManagerName, const Record &spec)
 Define the "constructor" to construct this engine when a table is read back.

Private Member Functions

 VirtualTaQLColumn (const VirtualTaQLColumn &)
 
   

VirtualTaQLColumnoperator= (const VirtualTaQLColumn &)
 Assignment is not needed and therefore forbidden (so it is made private).
virtual DataManagerColumnmakeScalarColumn (const String &columnName, int dataType, const String &)
 Create the column object for the scalar column in this engine.
virtual DataManagerColumnmakeIndArrColumn (const String &columnName, int dataType, const String &dataTypeId)
 Create the column object for the indirect array column in this engine.
virtual void create (uInt)
 Let the engine initialize the object for a new table.
virtual void prepare ()
 Prepare compiles the expression.
virtual void getBoolV (uInt rownr, Bool *dataPtr)
 Get the scalar value in the given row.
virtual void getuCharV (uInt rownr, uChar *dataPtr)
virtual void getShortV (uInt rownr, Short *dataPtr)
virtual void getuShortV (uInt rownr, uShort *dataPtr)
virtual void getIntV (uInt rownr, Int *dataPtr)
virtual void getuIntV (uInt rownr, uInt *dataPtr)
virtual void getfloatV (uInt rownr, float *dataPtr)
virtual void getdoubleV (uInt rownr, double *dataPtr)
virtual void getComplexV (uInt rownr, Complex *dataPtr)
virtual void getDComplexV (uInt rownr, DComplex *dataPtr)
virtual void getStringV (uInt rownr, String *dataPtr)
virtual void getArrayV (uInt rownr, void *dataPtr)
 Get the array value in the given row.
IPosition getResult (uInt rownr, void *dataPtr)
 Get the result.
void clearCurResult ()
 Clear the result cache.

Private Attributes

int itsDataType
Bool itsIsArray
String itsColumnName
String itsExpr
TableExprNodeitsNode
Bool itsTempWritable
Int itsCurRow
void * itsCurResult
IPosition itsCurShape

Detailed Description

Virtual scalar column using TaQL.

Review Status

Reviewed By:
GvD
Date Reviewed:
2004/07/09

Prerequisite

Synopsis

VirtualTaQLColumn is a virtual column engine to define the contents of a column as a TaQL expression in which possibly other columns are used. It is (of course) only possible to get data from the column; puts cannot be done.
The expression result can be a scalar or array of the basic TaQL data types. The column data type has to be conformant with that TaQL type, thus a column of any integer type has to be used for an integer TaQL result.
Caution: One has to be careful with deleting columns; If in an existing table a TaQL expression uses a deleted column, the expression cannot be parsed anymore and the table cannot be opened anymore; In the future the Table System will be made more forgiving;

Example

The following example creates a table with a few columns. One column is virtual and has a random value if Col3 is true. Otherwise it has value 0.

       // Create the table description.
       TableDesc td;
       td.addColumn (ScalarColumnDesc<DComplex>("Col1"));
       td.addColumn (ScalarColumnDesc<Int>("Col2"));
       td.addColumn (ScalarColumnDesc<Bool>("Col3"));
       td.addColumn (ScalarColumnDesc<Double>("ColVirt"));
     
       // Now create a new table from the description.
       SetupNewTable newTab("tmtest", td, Table::New);
       // Define the expression of the virtual column and bind the column to it.
       // The other columns are by default bound to StandardStMan.
       VirtualTaQLColumn engine("iif(Col3,rand(),0)");
       newTab.bindColumn("ColVirt", engine);
       Table tab(newTab);

Definition at line 88 of file VirtualTaQLColumn.h.


Constructor & Destructor Documentation

Construct it with the given TaQL expression.

Construct it with the given specification.

Destructor is mandatory.

   

Copy is not needed and therefore forbidden (so it is made private).


Member Function Documentation

Return the name of the class.

Clear the result cache.

virtual DataManager* casa::VirtualTaQLColumn::clone ( ) const [virtual]

Clone the engine object.

Implements casa::DataManager.

virtual void casa::VirtualTaQLColumn::create ( uInt  ) [private, virtual]

Let the engine initialize the object for a new table.

It defines a column keyword holding the expression.

Reimplemented from casa::VirtualColumnEngine.

virtual Record casa::VirtualTaQLColumn::dataManagerSpec ( ) const [virtual]

Get the data manager specification.

Reimplemented from casa::DataManager.

virtual String casa::VirtualTaQLColumn::dataManagerType ( ) const [virtual]

Return the type name of the engine.

(i.e. its class name VirtualTaQLColumn).

Implements casa::DataManager.

virtual int casa::VirtualTaQLColumn::dataType ( ) const [virtual]

Functions to return column info.

Implements casa::DataManagerColumn.

const String& casa::VirtualTaQLColumn::expression ( ) const [inline]

Return the TaQL expression used.

Definition at line 128 of file VirtualTaQLColumn.h.

References itsExpr.

virtual void casa::VirtualTaQLColumn::getArrayV ( uInt  rownr,
void *  dataPtr 
) [private, virtual]

Get the array value in the given row.

The argument dataPtr is in fact an Array<T>*, but a void* is needed to be generic. The array pointed to by dataPtr has to have the correct shape (which is guaranteed by the ArrayColumn get function). The default implementation throws an "invalid operation" exception.

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getBoolV ( uInt  rownr,
Bool dataPtr 
) [private, virtual]

Get the scalar value in the given row.

The default implementation throws an "invalid operation" exception.

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getComplexV ( uInt  rownr,
Complex *  dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getDComplexV ( uInt  rownr,
DComplex *  dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getdoubleV ( uInt  rownr,
double *  dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getfloatV ( uInt  rownr,
float *  dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getIntV ( uInt  rownr,
Int dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

IPosition casa::VirtualTaQLColumn::getResult ( uInt  rownr,
void *  dataPtr 
) [private]

Get the result.

virtual void casa::VirtualTaQLColumn::getShortV ( uInt  rownr,
Short dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getStringV ( uInt  rownr,
String dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getuCharV ( uInt  rownr,
uChar dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getuIntV ( uInt  rownr,
uInt dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual void casa::VirtualTaQLColumn::getuShortV ( uInt  rownr,
uShort dataPtr 
) [private, virtual]

Reimplemented from casa::DataManagerColumn.

virtual Bool casa::VirtualTaQLColumn::isShapeDefined ( uInt  rownr) [virtual]

Is the value shape defined in the given row? By default it returns True.

Reimplemented from casa::DataManagerColumn.

virtual Bool casa::VirtualTaQLColumn::isWritable ( ) const [virtual]

Test if data can be put into this column.

This does not test if the data file is writable, only if it is in principle allowed to store data into the column. (It may not be allowed for virtual columns). The default is True.

Reimplemented from casa::DataManagerColumn.

virtual DataManagerColumn* casa::VirtualTaQLColumn::makeIndArrColumn ( const String columnName,
int  dataType,
const String dataTypeId 
) [private, virtual]

Create the column object for the indirect array column in this engine.

Reimplemented from casa::VirtualColumnEngine.

static DataManager* casa::VirtualTaQLColumn::makeObject ( const String dataManagerName,
const Record spec 
) [static]

Define the "constructor" to construct this engine when a table is read back.

This "constructor" has to be registered by the user of the engine. If the engine is commonly used, its registration can be added into the registerAllCtor function in DataManReg.cc. This function gets automatically invoked by the table system.

virtual DataManagerColumn* casa::VirtualTaQLColumn::makeScalarColumn ( const String columnName,
int  dataType,
const String  
) [private, virtual]

Create the column object for the scalar column in this engine.

Reimplemented from casa::VirtualColumnEngine.

virtual uInt casa::VirtualTaQLColumn::ndim ( uInt  rownr) [virtual]

Get the dimensionality of the item in the given row.

By default it returns shape(rownr).nelements().

Reimplemented from casa::DataManagerColumn.

VirtualTaQLColumn& casa::VirtualTaQLColumn::operator= ( const VirtualTaQLColumn ) [private]

Assignment is not needed and therefore forbidden (so it is made private).

virtual void casa::VirtualTaQLColumn::prepare ( ) [private, virtual]

Prepare compiles the expression.

Reimplemented from casa::VirtualColumnEngine.

static void casa::VirtualTaQLColumn::registerClass ( ) [static]

Register the class name and the static makeObject "constructor".

This will make the engine known to the table system.

virtual IPosition casa::VirtualTaQLColumn::shape ( uInt  rownr) [virtual]

Get the shape of the item in the given row.

By default it returns a zero-length IPosition (for a scalar value).

Reimplemented from casa::DataManagerColumn.


Member Data Documentation

Definition at line 203 of file VirtualTaQLColumn.h.

Definition at line 208 of file VirtualTaQLColumn.h.

Definition at line 207 of file VirtualTaQLColumn.h.

Definition at line 209 of file VirtualTaQLColumn.h.

Definition at line 201 of file VirtualTaQLColumn.h.

Definition at line 204 of file VirtualTaQLColumn.h.

Referenced by expression().

Definition at line 202 of file VirtualTaQLColumn.h.

Definition at line 205 of file VirtualTaQLColumn.h.

Definition at line 206 of file VirtualTaQLColumn.h.


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