Loading...
Searching...
No Matches
ExprNodeRecord.h
Go to the documentation of this file.
//# ExprNodeRecord.h: Nodes representing fields in record select expression tree
//# Copyright (C) 2000
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef TABLES_EXPRNODERECORD_H
#define TABLES_EXPRNODERECORD_H
//# Includes
#include <casacore/tables/TaQL/ExprNodeRep.h>
#include <casacore/tables/TaQL/ExprNodeArray.h>
#include <casacore/casa/Containers/Block.h>
#include <casacore/casa/Utilities/DataType.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class RecordDesc;
class RecordInterface;
//# This file defines classes derived from TableExprNode representing
//# fields in a record select expression.
//#
//# Data types Bool, Double, DComplex and String are used.
//# Char, uChar, Short, uShort, Int and uInt are converted to Int64,
//# float to Double, and Complex to DComplex.
//# Binary operators +, -, *, /, ==, >=, >, <, <= and != are recognized.
//# Also &&, ||, parentheses and unary +, - and ! are recognized.
// <summary>
// Scalar field in record select expression tree
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
// </reviewed>
//
// <prerequisite>
//# Classes you should understand before using this one.
// <li> TableExprNode
// </prerequisite>
// <synopsis>
// This class represents a scalar column in a table select expression tree.
// When the select expression gets evaluated, the value of the
// given row in the column is used.
// </synopsis>
class TableExprNodeRecordField : public TableExprNodeBinary
{
public:
TableExprNodeRecordField (DataType dtype,
const Block<Int>& fieldNumbers);
~TableExprNodeRecordField();
virtual const IPosition& getShape (const TableExprId& id);
virtual Bool isDefined (const TableExprId& id);
virtual Bool getBool (const TableExprId& id);
virtual Int64 getInt (const TableExprId& id);
virtual Double getDouble (const TableExprId& id);
virtual DComplex getDComplex (const TableExprId& id);
virtual String getString (const TableExprId& id);
protected:
Block<Int> fieldNrs_p;
uInt lastEntry_p;
// Get the record for the last field number, thus going through
// all subrecords for the other field numbers.
const RecordInterface& getRecord (const TableExprId& id) const;
};
// <summary>
// Array field in record select expression tree
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
// </reviewed>
//
// <prerequisite>
//# Classes you should understand before using this one.
// <li> TableExprNode
// </prerequisite>
// <synopsis>
// This class represents a scalar column in a table select expression tree.
// When the select expression gets evaluated, the value of the
// given row in the column is used.
// </synopsis>
class TableExprNodeRecordFieldArray : public TableExprNodeArray
{
public:
TableExprNodeRecordFieldArray (DataType dtype,
const Block<Int>& fieldNumbers);
~TableExprNodeRecordFieldArray();
virtual Bool isDefined (const TableExprId& id);
virtual const IPosition& getShape (const TableExprId& id);
virtual MArray<Bool> getArrayBool (const TableExprId& id);
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);
protected:
Block<Int> fieldNrs_p;
uInt lastEntry_p;
// Get the record for the last field number, thus going through
// all subrecords for the other field numbers.
const RecordInterface& getRecord (const TableExprId& id) const;
};
} //# NAMESPACE CASACORE - END
#endif
casacore::Block
simple 1-D array
Definition Block.h:198
casacore::IPosition
Definition IPosition.h:117
casacore::MArray
Definition MArray.h:68
casacore::RecordDesc
Definition RecordDesc.h:103
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::TableExprId
Definition TableExprId.h:95
casacore::TableExprNodeArray::TableExprNodeArray
TableExprNodeArray(NodeDataType, OperType)
Create the object.
casacore::TableExprNodeBinary::TableExprNodeBinary
TableExprNodeBinary(NodeDataType, ValueType, OperType, ExprType)
Constructor.
casacore::TableExprNodeRecordFieldArray::getArrayString
virtual MArray< String > getArrayString(const TableExprId &id)
casacore::TableExprNodeRecordFieldArray::getShape
virtual const IPosition & getShape(const TableExprId &id)
Get the shape of the array in the given row.
casacore::TableExprNodeRecordFieldArray::isDefined
virtual Bool isDefined(const TableExprId &id)
Is the value in the given row defined?
casacore::TableExprNodeRecordFieldArray::getArrayInt
virtual MArray< Int64 > getArrayInt(const TableExprId &id)
casacore::TableExprNodeRecordFieldArray::fieldNrs_p
Block< Int > fieldNrs_p
Definition ExprNodeRecord.h:139
casacore::TableExprNodeRecordFieldArray::lastEntry_p
uInt lastEntry_p
Definition ExprNodeRecord.h:140
casacore::TableExprNodeRecordFieldArray::getArrayBool
virtual MArray< Bool > getArrayBool(const TableExprId &id)
Get an array value for this node in the given row.
casacore::TableExprNodeRecordFieldArray::~TableExprNodeRecordFieldArray
~TableExprNodeRecordFieldArray()
casacore::TableExprNodeRecordFieldArray::getArrayDComplex
virtual MArray< DComplex > getArrayDComplex(const TableExprId &id)
The default implementation of getArrayDComplex does getArrayDouble and converts the result.
casacore::TableExprNodeRecordFieldArray::getRecord
const RecordInterface & getRecord(const TableExprId &id) const
Get the record for the last field number, thus going through all subrecords for the other field numbe...
casacore::TableExprNodeRecordFieldArray::TableExprNodeRecordFieldArray
TableExprNodeRecordFieldArray(DataType dtype, const Block< Int > &fieldNumbers)
casacore::TableExprNodeRecordFieldArray::getArrayDouble
virtual MArray< Double > getArrayDouble(const TableExprId &id)
The default implementation of getArrayDouble does getArrayInt and converts the result.
casacore::TableExprNodeRecordField::lastEntry_p
uInt lastEntry_p
Definition ExprNodeRecord.h:92
casacore::TableExprNodeRecordField::getRecord
const RecordInterface & getRecord(const TableExprId &id) const
Get the record for the last field number, thus going through all subrecords for the other field numbe...
casacore::TableExprNodeRecordField::isDefined
virtual Bool isDefined(const TableExprId &id)
Is the value in the given row defined?
casacore::TableExprNodeRecordField::getBool
virtual Bool getBool(const TableExprId &id)
Get a scalar value for this node in the given row.
casacore::TableExprNodeRecordField::TableExprNodeRecordField
TableExprNodeRecordField(DataType dtype, const Block< Int > &fieldNumbers)
casacore::TableExprNodeRecordField::getShape
virtual const IPosition & getShape(const TableExprId &id)
Get the shape for the given row.
casacore::TableExprNodeRecordField::getString
virtual String getString(const TableExprId &id)
casacore::TableExprNodeRecordField::~TableExprNodeRecordField
~TableExprNodeRecordField()
casacore::TableExprNodeRecordField::getDComplex
virtual DComplex getDComplex(const TableExprId &id)
casacore::TableExprNodeRecordField::getInt
virtual Int64 getInt(const TableExprId &id)
casacore::TableExprNodeRecordField::getDouble
virtual Double getDouble(const TableExprId &id)
casacore::TableExprNodeRecordField::fieldNrs_p
Block< Int > fieldNrs_p
Definition ExprNodeRecord.h:91
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::Int64
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size).
Definition aipsxtype.h:36
casacore::RecordInterface
RecordInterface()
The default constructor creates an empty record with a variable structure.
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Double
double Double
Definition aipstype.h:53