casacore
Loading...
Searching...
No Matches
SSMIndStringColumn.h
Go to the documentation of this file.
1//# SSMIndStringColumn.h: An Indirect String Array Column in the SSM
2//# Copyright (C) 2000
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: casa-feedback@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25
26#ifndef TABLES_SSMINDSTRINGCOLUMN_H
27#define TABLES_SSMINDSTRINGCOLUMN_H
28
29
30//# Includes
31#include <casacore/casa/aips.h>
32#include <casacore/tables/DataMan/SSMDirColumn.h>
33
34namespace casacore { //# NAMESPACE CASACORE - BEGIN
35
36//# Forward declarations
37
38
39// <summary>
40// An Indirect String Array Column in the Standard Storage Manager.
41// </summary>
42
43// <use visibility=local>
44
45// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tSSMStringHandler.cc">
46// </reviewed>
47
48// <prerequisite>
49//# Classes you should understand before using this one.
50// <li> <linkto class=SSMBase>SSMBase</linkto>
51// <li> <linkto class=SSMDirColumn>SSMColumn</linkto>
52// <li> <linkto class=SSMStringHandler>SSMStringHandler</linkto>
53// </prerequisite>
54
55// <etymology>
56// SSMIndStringColumn represents an Indirect String Array Column in the
57// Standard Storage Manager.
58// </etymology>
59
60// <synopsis>
61// SSMIndStringColumn handles indirect variable shaped string arrays.
62// Note that indirect fixed shape string arrays are handled by
63// <linkto class=SSMDirColumn>SSMDirColumn</linkto>.
64// <p>
65// All string array access is handled by class
66// <linkto class=SSMStringHandler>SSMStringHandler</linkto>, so
67// SSMIndStringColumn is merely an interface to this class.
68// The only thing it does is accessing the bucketnr, offset, and length
69// in the data bucket.
70// </synopsis>
71
72// <motivation>
73// The reason that indirect string arrays are handled here instead of
74// in <linkto class=SSMIndColumn>SSMIndColumn</linkto> is that the string
75// buckets are more disk space efficient when string arrays are frequently
76// updated.
77// </motivation>
78
79//# <todo asof="$DATE:$">
80//# A List of bugs, limitations, extensions or planned refinements.
81//# </todo>
82
83
85{
86public:
87 // Create a SSMIndStringColumn object with the given parent.
88 // It initializes the various variables.
89 // It keeps the pointer to its parent (but does not own it).
90 SSMIndStringColumn (SSMBase* aParent, int aDataType, uInt aColNr);
91
93
94 // Forbid copy constructor.
96
97 // Forbid assignment.
99
100 // Get an array value in the given row.
101 // An exception is thrown if no array is defined in this row.
102 virtual void getArrayV (rownr_t rownr, ArrayBase& dataPtr);
103
104 // Put an array value in the given row.
105 virtual void putArrayV (rownr_t rownr, const ArrayBase& dataPtr);
106
107 // Set the shape of the array in the given row.
108 void setShape (rownr_t aRowNr, const IPosition& aShape);
109
110 // Get the shape of the array in the given row.
111 virtual IPosition shape (rownr_t aRowNr);
112
113 // This storage manager can handle changing array shapes.
115
116 // Is the shape defined (i.e. is there an array) in this row?
117 virtual Bool isShapeDefined (rownr_t aRowNr);
118
119 // Get the dimensionality of the item in the given row.
120 virtual uInt ndim (rownr_t aRowNr);
121};
122
123
124
125} //# NAMESPACE CASACORE - END
126
127#endif
128
129
130
131
Non-templated base class for templated Array class.
Definition ArrayBase.h:71
virtual Bool isShapeDefined(rownr_t aRowNr)
Is the shape defined (i.e.
Bool canChangeShape() const
This storage manager can handle changing array shapes.
SSMIndStringColumn(const SSMIndStringColumn &)=delete
Forbid copy constructor.
virtual void putArrayV(rownr_t rownr, const ArrayBase &dataPtr)
Put an array value in the given row.
SSMIndStringColumn(SSMBase *aParent, int aDataType, uInt aColNr)
Create a SSMIndStringColumn object with the given parent.
void setShape(rownr_t aRowNr, const IPosition &aShape)
Set the shape of the array in the given row.
SSMIndStringColumn & operator=(const SSMIndStringColumn &)=delete
Forbid assignment.
virtual void getArrayV(rownr_t rownr, ArrayBase &dataPtr)
Get an array value in the given row.
virtual IPosition shape(rownr_t aRowNr)
Get the shape of the array in the given row.
virtual uInt ndim(rownr_t aRowNr)
Get the dimensionality of the item in the given row.
this file contains all the compiler specific defines
Definition mainpage.dox:28
unsigned int uInt
Definition aipstype.h:49
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44