casacore
Loading...
Searching...
No Matches
ISMColumn.h
Go to the documentation of this file.
1// # ISMColumn.h: A Column in the Incremental Storage Manager
2// # Copyright (C) 1996,1997,1998,1999,2002
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_ISMCOLUMN_H
27#define TABLES_ISMCOLUMN_H
28
29// # Includes
30#include <casacore/casa/aips.h>
31#include <casacore/tables/DataMan/StManColumnBase.h>
32#include <casacore/tables/DataMan/ISMBase.h>
33#include <casacore/tables/Tables/RefRows.h>
34#include <casacore/casa/Arrays/IPosition.h>
35#include <casacore/casa/Arrays/Vector.h>
36#include <casacore/casa/Containers/Block.h>
37#include <casacore/casa/Utilities/Compare.h>
38#include <casacore/casa/OS/Conversion.h>
39
40namespace casacore { // # NAMESPACE CASACORE - BEGIN
41
42// # Forward declarations
43class ISMBucket;
44
45// <summary>
46// A Column in the Incremental Storage Manager.
47// </summary>
48
49// <use visibility=local>
50
51// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
52// </reviewed>
53
54// <prerequisite>
55// # Classes you should understand before using this one.
56// <li> <linkto class=ISMBase>ISMBase</linkto>
57// </prerequisite>
58
59// <etymology>
60// ISMColumn represents a Column in the Incremental Storage Manager.
61// </etymology>
62
63// <synopsis>
64// ISMColumn handles the access to a column containing scalars or direct
65// arrays of the various data types. It uses class <linkto class=ISMBucket>
66// ISMBucket</linkto> to get and put the data into the correct bucket.
67// When the value does not fit in the bucket, the bucket is split
68// and the new bucket is added to the storage manager.
69// <p>
70// The object maintains a variable indicating the last row ever put.
71// This is used to decide if a put of a value is valid until the
72// end of the table or for that one row only. In this way it does not
73// make any difference if rows are added before or after a value is put
74// <br>
75// A value put before or at the last row ever put will only affect that
76// one row. The rows before and after it keep their original value. If
77// needed that value is copied.
78// <p>
79// To optimize (especially sequential) access to the column, ISMColumn
80// maintains the last value gotten and the rows for which it is valid.
81// In this way a get does not need to access the data in the bucket.
82// <p>
83// ISMColumn use the static conversion functions in the
84// <linkto class=Conversion>Conversion</linkto> framework to
85// get/put the data in external format (be it canonical or local).
86// Most data types are fixed length, but some are variable length
87// (e.g. String). In external format variable length data is preceeded
88// by its total length (which includes the length itself). This makes
89// it possible to get the length of a data value without having to
90// interpret it, which is easy when (re)moving a value. For this reason
91// ISMColumn contains its own conversion functions for Strings.
92// <p>
93// ISMColumn also acts as the base class for more specialized ISM
94// column classes (i.e. <linkto class=ISMIndColumn>ISMIndColumn</linkto>
95// for indirect columns).
96// In this way <linkto class=ISMBase>ISMBase</linkto> can hold a
97// block of <src>ISMColumn*</src> for any column. Furthermore
98// <src>ISMColumn</src> contains the hooks to allow a derived class
99// to use other ISMColumn functions (e.g. there are "action" functions
100// for a derived class to react on the duplication or removal of
101// a data value (e.g. due to a bucket split).
102// </synopsis>
103
104// <motivation>
105// ISMColumn encapsulates all operations on an ISM Column.
106// </motivation>
107
108// # <todo asof="$DATE:$">
109// # A List of bugs, limitations, extensions or planned refinements.
110// # </todo>
111
113 public:
114 // Create a ISMColumn object with the given parent.
115 // It initializes the various variables.
116 // It keeps the pointer to its parent (but does not own it).
117 ISMColumn(ISMBase* parent, int dataType, uInt colnr);
118
120
121 // Forbid copy constructor.
122 ISMColumn(const ISMColumn&) = delete;
123
124 // Forbid assignment.
125 ISMColumn& operator=(const ISMColumn&) = delete;
126
127 // Set the shape of an array in the column.
128 virtual void setShapeColumn(const IPosition& shape);
129
130 // Get the dimensionality of the item in the given row.
131 // This is the same for all rows.
132 virtual uInt ndim(rownr_t rownr);
133
134 // Get the shape of the array in the given row.
135 // This is the same for all rows.
136 virtual IPosition shape(rownr_t rownr);
137
138 // Let the column object initialize itself for a newly created table.
139 // This is meant for a derived class.
140 virtual void doCreate(ISMBucket*);
141
142 // Let the column object initialize itself for an existing table.
143 virtual void getFile(rownr_t nrrow);
144
145 // Flush and optionally fsync the data.
146 // This is meant for a derived class.
147 virtual Bool flush(rownr_t nrrow, Bool fsync);
148
149 // Resync the storage manager with the new file contents.
150 // It resets the last rownr put.
151 void resync(rownr_t nrrow);
152
153 // Let the column reopen its data files for read/write access.
154 virtual void reopenRW();
155
156 // Get a scalar value in the given row.
157 // <group>
158 virtual void getBool(rownr_t rownr, Bool* dataPtr);
159 virtual void getuChar(rownr_t rownr, uChar* dataPtr);
160 virtual void getShort(rownr_t rownr, Short* dataPtr);
161 virtual void getuShort(rownr_t rownr, uShort* dataPtr);
162 virtual void getInt(rownr_t rownr, Int* dataPtr);
163 virtual void getuInt(rownr_t rownr, uInt* dataPtr);
164 virtual void getInt64(rownr_t rownr, Int64* dataPtr);
165 virtual void getfloat(rownr_t rownr, float* dataPtr);
166 virtual void getdouble(rownr_t rownr, double* dataPtr);
167 virtual void getComplex(rownr_t rownr, Complex* dataPtr);
168 virtual void getDComplex(rownr_t rownr, DComplex* dataPtr);
169 virtual void getString(rownr_t rownr, String* dataPtr);
170 // </group>
171
172 // Put a scalar value in the given row.
173 // <group>
174 virtual void putBool(rownr_t rownr, const Bool* dataPtr);
175 virtual void putuChar(rownr_t rownr, const uChar* dataPtr);
176 virtual void putShort(rownr_t rownr, const Short* dataPtr);
177 virtual void putuShort(rownr_t rownr, const uShort* dataPtr);
178 virtual void putInt(rownr_t rownr, const Int* dataPtr);
179 virtual void putuInt(rownr_t rownr, const uInt* dataPtr);
180 virtual void putInt64(rownr_t rownr, const Int64* dataPtr);
181 virtual void putfloat(rownr_t rownr, const float* dataPtr);
182 virtual void putdouble(rownr_t rownr, const double* dataPtr);
183 virtual void putComplex(rownr_t rownr, const Complex* dataPtr);
184 virtual void putDComplex(rownr_t rownr, const DComplex* dataPtr);
185 virtual void putString(rownr_t rownr, const String* dataPtr);
186 // </group>
187
188 // Get the scalar values in the entire column.
189 // The buffer pointed to by dataPtr has to have the correct length.
190 // (which is guaranteed by the ScalarColumn getColumn function).
191 virtual void getScalarColumnV(ArrayBase& dataPtr);
192
193 // Put the scalar values into the entire column.
194 // The buffer pointed to by dataPtr has to have the correct length.
195 // (which is guaranteed by the ScalarColumn putColumn function).
196 virtual void putScalarColumnV(const ArrayBase& dataPtr);
197
198 // Get the scalar values in some cells of the column.
199 // The buffer pointed to by dataPtr has to have the correct length.
200 // (which is guaranteed by the ScalarColumn getColumnCells function).
201 virtual void getScalarColumnCellsV(const RefRows& rownrs, ArrayBase& dataPtr);
202
203 // Get an array value in the given row.
204 virtual void getArrayV(rownr_t rownr, ArrayBase& dataPtr);
205
206 // Put an array value in the given row.
207 virtual void putArrayV(rownr_t rownr, const ArrayBase& dataPtr);
208
209 // Add (newNrrow-oldNrrow) rows to the column and initialize
210 // the new rows when needed.
211 virtual void addRow(rownr_t newNrrow, rownr_t oldNrrow);
212
213 // Remove the given row in the bucket from the column.
214 void remove(rownr_t bucketRownr, ISMBucket* bucket, rownr_t bucketNrrow, rownr_t newNrrow);
215
216 // Get the function needed to read/write a uInt and rownr from/to
217 // external format. This is used by other classes to read the length
218 // of a variable data value.
219 // <group>
224 // </group>
225
226 // Give a derived class the opportunity to react on the duplication
227 // of a value. It is used by ISMIndColumn.
228 virtual void handleCopy(rownr_t rownr, const char* value);
229
230 // Give a derived class the opportunity to react on the removal
231 // of a value. It is used by ISMIndColumn.
232 virtual void handleRemove(rownr_t rownr, const char* value);
233
234 // Get the fixed length of the data value in a cell of this column
235 // (0 = variable length).
236 uInt getFixedLength() const;
237
238 // Get the nr of elements in this data value.
239 uInt nelements() const;
240
241 protected:
242 // Test if the last value is invalid for this row.
244
245 // Get the value for this row.
246 // Set the cache if the flag is set.
247 void getValue(rownr_t rownr, void* value, Bool setCache);
248
249 // Put the value for this row.
250 void putValue(rownr_t rownr, const void* value);
251
252 // # Declare member variables.
253 // Pointer to the parent storage manager.
255 // Length of column cell value in storage format (0 = variable length).
256 // If 0, the value is always preceeded by a uInt giving the length.
258 // Column sequence number of this column.
260 // The shape of the column.
262 // Number of elements in a value for this column.
264 // Number of values to be copied.
265 // Normally this is nrelem_p, but for complex types it is 2*nrelem_p.
266 // When local format is used, it is the number of bytes.
268 // Cache for interval for which last value read is valid.
269 // The last value is valid for startRow_p till endRow_p (inclusive).
273 // The last row for which a value has been put.
275 // The size of the data type in local format.
277 // Pointer to a convert function for writing.
279 // Pointer to a convert function for reading.
281 // Pointer to a compare function.
282 ObjCompareFunc* compareFunc_p;
283
284 private:
285 // Initialize part of the object.
286 // It is used by doCreate and getFile.
287 void init();
288
289 // Clear the object (used by destructor and init).
290 void clear();
291
292 // Put the value in all buckets from the given row on.
293 void putFromRow(rownr_t rownr, const char* data, uInt lenData);
294
295 // Put a data value into the bucket.
296 // When it is at the first row of the bucket, it replaces the value.
297 // Otherwise it is added.
298 void putData(ISMBucket* bucket, rownr_t bucketStartRow, rownr_t bucketNrrow, rownr_t bucketRownr,
299 const char* data, uInt lenData, Bool afterLastRow, Bool canSplit);
300
301 // Replace a value at the given offset in the bucket.
302 // If the bucket is too small, it will be split (if allowed).
303 void replaceData(ISMBucket* bucket, rownr_t bucketStartRow, rownr_t bucketNrrow,
304 rownr_t bucketRownr, uInt& offset, const char* data, uInt lenData,
305 Bool canSplit = True);
306
307 // Add a value at the given index in the bucket.
308 // If the bucket is too small, it will be split (if allowed).
309 Bool addData(ISMBucket* bucket, rownr_t bucketStartRow, rownr_t bucketNrrow, rownr_t bucketRownr,
310 uInt inx, const char* data, uInt lenData, Bool afterLastRow = False,
311 Bool canSplit = True);
312
313 // Handle the duplicated values after a bucket split.
314 void handleSplit(ISMBucket& bucket, const Block<Bool>& duplicated);
315
316 // Compare the values.
317 virtual Bool compareValue(const void* val1, const void* val2) const;
318
319 // Handle a String in copying to/from external format.
320 // <group>
321 static size_t fromString(void* out, const void* in, size_t n,
322 Conversion::ValueFunction* writeLeng);
323 static size_t toString(void* out, const void* in, size_t n, Conversion::ValueFunction* readLeng);
324 static size_t writeStringBE(void* out, const void* in, size_t n);
325 static size_t readStringBE(void* out, const void* in, size_t n);
326 static size_t writeStringLE(void* out, const void* in, size_t n);
327 static size_t readStringLE(void* out, const void* in, size_t n);
328 // </group>
329
330 template <typename T>
331 void getScaCol(Vector<T>& dataPtr) {
332 rownr_t nrrow = dataPtr.nelements();
333 rownr_t rownr = 0;
334 while (rownr < nrrow) {
335 getValueGeneric<T>(rownr, &(dataPtr(rownr)));
336 for (rownr++; rownr <= endRow_p; ++rownr) {
337 dataPtr(rownr) = *(T*)lastValue_p;
338 }
339 }
340 }
341
342 template <typename T>
343 void getScaColCells(const RefRows& rownrs, Vector<T>& values) {
344 Bool delV;
345 T* value = values.getStorage(delV);
346 T* valptr = value;
347 if (rownrs.isSliced()) {
348 RefRowsSliceIter iter(rownrs);
349 while (!iter.pastEnd()) {
350 rownr_t rownr = iter.sliceStart();
351 rownr_t end = iter.sliceEnd();
352 rownr_t incr = iter.sliceIncr();
353 while (rownr <= end) {
354 if (isLastValueInvalid(rownr)) {
355 getValueGeneric<T>(rownr, valptr);
356 valptr++;
357 rownr += incr;
358 }
359 const T* cacheValue = (const T*)(lastValue_p);
360 rownr_t endrow = std::min(end, endRow_p);
361 while (rownr <= endrow) {
362 *valptr++ = *cacheValue;
363 rownr += incr;
364 }
365 }
366 iter++;
367 }
368 } else {
369 const Vector<rownr_t>& rowvec = rownrs.rowVector();
370 rownr_t nr = rowvec.nelements();
371 if (nr > 0) {
372 Bool delR;
373 const rownr_t* rows = rowvec.getStorage(delR);
374 if (isLastValueInvalid(rows[0])) {
375 getValueGeneric<T>(0, &(value[0]));
376 }
377 const T* cacheValue = (const T*)(lastValue_p);
378 rownr_t strow = startRow_p;
379 rownr_t endrow = endRow_p;
380 for (rownr_t i = 0; i < nr; i++) {
381 rownr_t rownr = rows[i];
382 if (rownr >= strow && rownr <= endrow) {
383 value[i] = *cacheValue;
384 } else {
385 getValueGeneric<T>(rownr, &(value[i]));
386 cacheValue = (const T*)(lastValue_p);
387 strow = startRow_p;
388 endrow = endRow_p;
389 }
390 }
391 rowvec.freeStorage(rows, delR);
392 }
393 }
394 values.putStorage(value, delV);
395 }
396
397 template <typename T>
398 void putScaCol(const Vector<T>& dataPtr) {
399 rownr_t nrrow = dataPtr.nelements();
400 for (rownr_t i = 0; i < nrrow; ++i) {
401 putValueGeneric(i, &(dataPtr(i)));
402 }
403 }
404};
405
407 return rownr < startRow_p || rownr > endRow_p;
408}
409
411
412inline uInt ISMColumn::nelements() const { return nrelem_p; }
413
414} // namespace casacore
415
416#endif
Non-templated base class for templated Array class.
Definition ArrayBase.h:69
size_t nelements() const
How many elements does this array have?
Definition ArrayBase.h:98
void freeStorage(const T *&storage, bool deleteIt) const
If deleteIt is set, delete "storage".
void putStorage(T *&storage, bool deleteAndCopy)
putStorage() is normally called after a call to getStorage() (cf).
T * getStorage(bool &deleteIt)
Generally use of this should be shunned, except to use a FORTRAN routine or something similar.
size_t ValueFunction(void *to, const void *from, size_t nvalues)
Define the signature of a function converting nvalues values from internal to external format or vice...
Definition Conversion.h:95
void getValueGeneric(rownr_t rownr, T *dataPtr)
void putValueGeneric(rownr_t rownr, const T *dataPtr)
virtual void putDComplex(rownr_t rownr, const DComplex *dataPtr)
ObjCompareFunc * compareFunc_p
Pointer to a compare function.
Definition ISMColumn.h:282
static size_t writeStringLE(void *out, const void *in, size_t n)
void resync(rownr_t nrrow)
Resync the storage manager with the new file contents.
IPosition shape_p
The shape of the column.
Definition ISMColumn.h:261
static Conversion::ValueFunction * getWriteRownr(Bool asCanonical)
virtual void getShort(rownr_t rownr, Short *dataPtr)
uInt getFixedLength() const
Get the fixed length of the data value in a cell of this column (0 = variable length).
Definition ISMColumn.h:410
virtual Bool compareValue(const void *val1, const void *val2) const
Compare the values.
static size_t writeStringBE(void *out, const void *in, size_t n)
virtual void putfloat(rownr_t rownr, const float *dataPtr)
virtual void putScalarColumnV(const ArrayBase &dataPtr)
Put the scalar values into the entire column.
void putValue(rownr_t rownr, const void *value)
Put the value for this row.
virtual void getArrayV(rownr_t rownr, ArrayBase &dataPtr)
Get an array value in the given row.
Conversion::ValueFunction * writeFunc_p
Pointer to a convert function for writing.
Definition ISMColumn.h:278
virtual void handleRemove(rownr_t rownr, const char *value)
Give a derived class the opportunity to react on the removal of a value.
ISMColumn(ISMBase *parent, int dataType, uInt colnr)
Create a ISMColumn object with the given parent.
virtual void putArrayV(rownr_t rownr, const ArrayBase &dataPtr)
Put an array value in the given row.
rownr_t lastRowPut_p
The last row for which a value has been put.
Definition ISMColumn.h:274
virtual void getScalarColumnCellsV(const RefRows &rownrs, ArrayBase &dataPtr)
Get the scalar values in some cells of the column.
void replaceData(ISMBucket *bucket, rownr_t bucketStartRow, rownr_t bucketNrrow, rownr_t bucketRownr, uInt &offset, const char *data, uInt lenData, Bool canSplit=True)
Replace a value at the given offset in the bucket.
virtual void putBool(rownr_t rownr, const Bool *dataPtr)
Put a scalar value in the given row.
virtual Bool flush(rownr_t nrrow, Bool fsync)
Flush and optionally fsync the data.
virtual void getScalarColumnV(ArrayBase &dataPtr)
Get the scalar values in the entire column.
virtual void putuShort(rownr_t rownr, const uShort *dataPtr)
virtual void getBool(rownr_t rownr, Bool *dataPtr)
Get a scalar value in the given row.
void getScaColCells(const RefRows &rownrs, Vector< T > &values)
Definition ISMColumn.h:343
virtual void putShort(rownr_t rownr, const Short *dataPtr)
static Conversion::ValueFunction * getReaduInt(Bool asCanonical)
Get the function needed to read/write a uInt and rownr from/to external format.
uInt nrelem_p
Number of elements in a value for this column.
Definition ISMColumn.h:263
void remove(rownr_t bucketRownr, ISMBucket *bucket, rownr_t bucketNrrow, rownr_t newNrrow)
Remove the given row in the bucket from the column.
virtual void getString(rownr_t rownr, String *dataPtr)
virtual void doCreate(ISMBucket *)
Let the column object initialize itself for a newly created table.
Bool addData(ISMBucket *bucket, rownr_t bucketStartRow, rownr_t bucketNrrow, rownr_t bucketRownr, uInt inx, const char *data, uInt lenData, Bool afterLastRow=False, Bool canSplit=True)
Add a value at the given index in the bucket.
static Conversion::ValueFunction * getReadRownr(Bool asCanonical)
static size_t fromString(void *out, const void *in, size_t n, Conversion::ValueFunction *writeLeng)
Handle a String in copying to/from external format.
virtual void getuShort(rownr_t rownr, uShort *dataPtr)
static size_t readStringLE(void *out, const void *in, size_t n)
uInt colnr_p
Column sequence number of this column.
Definition ISMColumn.h:259
virtual void getComplex(rownr_t rownr, Complex *dataPtr)
virtual void getdouble(rownr_t rownr, double *dataPtr)
void putData(ISMBucket *bucket, rownr_t bucketStartRow, rownr_t bucketNrrow, rownr_t bucketRownr, const char *data, uInt lenData, Bool afterLastRow, Bool canSplit)
Put a data value into the bucket.
void putScaCol(const Vector< T > &dataPtr)
Definition ISMColumn.h:398
virtual void getuChar(rownr_t rownr, uChar *dataPtr)
void handleSplit(ISMBucket &bucket, const Block< Bool > &duplicated)
Handle the duplicated values after a bucket split.
void init()
Initialize part of the object.
virtual void putInt(rownr_t rownr, const Int *dataPtr)
uInt nelements() const
Get the nr of elements in this data value.
Definition ISMColumn.h:412
void clear()
Clear the object (used by destructor and init).
void getScaCol(Vector< T > &dataPtr)
Definition ISMColumn.h:331
virtual IPosition shape(rownr_t rownr)
Get the shape of the array in the given row.
rownr_t startRow_p
Cache for interval for which last value read is valid.
Definition ISMColumn.h:270
virtual void getfloat(rownr_t rownr, float *dataPtr)
Conversion::ValueFunction * readFunc_p
Pointer to a convert function for reading.
Definition ISMColumn.h:280
virtual void putString(rownr_t rownr, const String *dataPtr)
virtual void getFile(rownr_t nrrow)
Let the column object initialize itself for an existing table.
static size_t toString(void *out, const void *in, size_t n, Conversion::ValueFunction *readLeng)
Bool isLastValueInvalid(rownr_t rownr)
Test if the last value is invalid for this row.
Definition ISMColumn.h:406
ISMBase * stmanPtr_p
Pointer to the parent storage manager.
Definition ISMColumn.h:254
void getValue(rownr_t rownr, void *value, Bool setCache)
Get the value for this row.
virtual void getuInt(rownr_t rownr, uInt *dataPtr)
uInt fixedLength_p
Length of column cell value in storage format (0 = variable length).
Definition ISMColumn.h:257
virtual void setShapeColumn(const IPosition &shape)
Set the shape of an array in the column.
static Conversion::ValueFunction * getWriteuInt(Bool asCanonical)
virtual void getInt(rownr_t rownr, Int *dataPtr)
ISMColumn & operator=(const ISMColumn &)=delete
Forbid assignment.
virtual void putInt64(rownr_t rownr, const Int64 *dataPtr)
virtual void putuChar(rownr_t rownr, const uChar *dataPtr)
virtual void reopenRW()
Let the column reopen its data files for read/write access.
void putFromRow(rownr_t rownr, const char *data, uInt lenData)
Put the value in all buckets from the given row on.
virtual void getInt64(rownr_t rownr, Int64 *dataPtr)
ISMColumn(const ISMColumn &)=delete
Forbid copy constructor.
virtual uInt ndim(rownr_t rownr)
Get the dimensionality of the item in the given row.
virtual void getDComplex(rownr_t rownr, DComplex *dataPtr)
virtual void addRow(rownr_t newNrrow, rownr_t oldNrrow)
Add (newNrrow-oldNrrow) rows to the column and initialize the new rows when needed.
static size_t readStringBE(void *out, const void *in, size_t n)
uInt typeSize_p
The size of the data type in local format.
Definition ISMColumn.h:276
uInt nrcopy_p
Number of values to be copied.
Definition ISMColumn.h:267
virtual void putdouble(rownr_t rownr, const double *dataPtr)
virtual void putuInt(rownr_t rownr, const uInt *dataPtr)
virtual void handleCopy(rownr_t rownr, const char *value)
Give a derived class the opportunity to react on the duplication of a value.
virtual void putComplex(rownr_t rownr, const Complex *dataPtr)
Class to iterate through a RefRows object.
Definition RefRows.h:200
rownr_t sliceIncr() const
Definition RefRows.h:223
rownr_t sliceEnd() const
Definition RefRows.h:222
Bool pastEnd() const
Is the iterator past the end?
Definition RefRows.h:210
rownr_t sliceStart() const
Get the current slice start, end, or increment.
Definition RefRows.h:221
Bool isSliced() const
Represents the vector a slice?
Definition RefRows.h:130
const Vector< rownr_t > & rowVector() const
Get the row vector as is (thus sliced if the object contains slices).
Definition RefRows.h:135
virtual int dataType() const
Return the data type of the column.
StManColumnBase(int dataType)
Default constructor.
String: the storage and methods of handling collections of characters.
Definition String.h:355
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
unsigned char uChar
Definition aipstype.h:45
const Bool False
Definition aipstype.h:42
int offset(int, int) const
compute a linear offset from array indicies
short Short
Definition aipstype.h:46
unsigned int uInt
Definition aipstype.h:49
unsigned short uShort
Definition aipstype.h:47
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size).
Definition aipsxtype.h:36
int Int
Definition aipstype.h:48
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
const Bool True
Definition aipstype.h:41
NewDelAllocator< T > NewDelAllocator< T >::value
Definition Allocator.h:360
iterator end()
Definition Block.h:601
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44