//# ConcatScalarColumn.h: A typed scalar column in a concatenated table //# Copyright (C) 2008 //# 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: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# $Id$ #ifndef TABLES_CONCATSCALARCOLUMN_H #define TABLES_CONCATSCALARCOLUMN_H //# Includes #include #include namespace casacore { //# NAMESPACE CASACORE - BEGIN // // A typed column in a concatenated table // // // // // //# Classes you should understand before using this one. //
  • ConcatTable //
  • BaseColumn // // // ConcatTable represents a column in a ConcatTable. A ConcatTable is a table // referencing another table, usually as the result of a select, etc.. // // // ConcatColumn handles the access of a column in a ConcatTable. // It calls the corresponding function in the referenced column // while converting the given row number to the row number in the // referenced table. // // // This class is untyped, i.e. not templated. // Every call is sent to the underlying referenced BaseColumn which // is typed by the virtual function mechanism. // A ConcatColumn can never be used directly. A user always has to // construct a typed ArrayColumn or ScalarColumn object to access a column. // This means everyting is fully type safe. // // //# A List of bugs, limitations, extensions or planned refinements. //
  • Act upon removal of rows or the underlying column // template class ConcatScalarColumn : public ConcatColumn { public: // Construct the ConcatColumn. It will point to the given column // description, ConcatTable and referenced column. // The ConcatTable will be used to convert the rownr to the rownr // in the apprpriate table. ConcatScalarColumn (const BaseColumnDesc*, ConcatTable*); ~ConcatScalarColumn(); // Get the vector of all scalar values in a column. virtual void getScalarColumn (ArrayBase& dataPtr) const; // Get the vector of some scalar values in a column. virtual void getScalarColumnCells (const RefRows& rownrs, ArrayBase& dataPtr) const; // Put the vector of all scalar values in the column. virtual void putScalarColumn (const ArrayBase& dataPtr); // Get the vector of some scalar values in a column. virtual void putScalarColumnCells (const RefRows& rownrs, const ArrayBase& dataPtr); // Handle the creation and deletion of sort keys. // virtual void makeSortKey (Sort& sortobj, CountedPtr& cmpObj, Int order, CountedPtr& dataSave); virtual void makeRefSortKey (Sort& sortobj, CountedPtr& cmpObj, Int order, const Vector& rownrs, CountedPtr& dataSave); virtual void fillSortKey (const Vector* vecPtr, Sort& sortobj, CountedPtr& cmpObj, Int order); // }; } //# NAMESPACE CASACORE - END #ifndef CASACORE_NO_AUTO_TEMPLATES #include #endif //# CASACORE_NO_AUTO_TEMPLATES #endif