casacore
Loading...
Searching...
No Matches
ArrayColumn.h
Go to the documentation of this file.
1// # ArrayColumn.h: access to an array table column with arbitrary data type
2// # Copyright (C) 1994,1995,1996,1997,1998,2001
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_ARRAYCOLUMN_H
27#define TABLES_ARRAYCOLUMN_H
28
29// # Includes
30#include <casacore/casa/aips.h>
31#include <casacore/casa/Arrays/Vector.h>
32#include <casacore/tables/Tables/ArrayColumnBase.h>
33#include <casacore/tables/Tables/TableError.h>
34
35namespace casacore { // # NAMESPACE CASACORE - BEGIN
36
37// # Forward Declarations
38class ColumnSlicer;
39
40// <summary>
41// Read and write access to an array table column with arbitrary data type
42// </summary>
43
44// <use visibility=export>
45
46// <reviewed reviewer="dschieb" date="1994/08/10" tests="none">
47// </reviewed>
48
49// <prerequisite>
50// <li> Table
51// <li> ArrayColumnBase
52// </prerequisite>
53
54// <etymology>
55// ArrayColumn<T> gives read and write access to an column in a table
56// containing an array with data type T.
57// </etymology>
58
59// <synopsis>
60// The class ArrayColumn allows readonly access to a column
61// containing arrays with an arbitrary data type. It can handle direct
62// as well as indirect arrays.
63// It is possible to get the data in an individual cell (i.e. table row);
64// either the whole array or a slice of the array can be accessed.
65// It is also possible to get the column as a whole if the arrays
66// in all cells of the column have the same shape (which is always true
67// for direct arrays). As in the case of individual cells it is possible
68// to get the entire arrays or a slice of the arrays.
69//
70// A default constructor is defined to allow construction of an array
71// of ArrayColumn objects. However, this constructs an object not
72// referencing a column. Functions like get, etc. will fail (i.e. result
73// in a segmentation fault) when used on such objects. The functions
74// isNull and throwIfNull can be used to test on this.
75// The functions attach and reference can fill in the object.
76//
77// The assignment operator is not defined for this class, because it was
78// felt it would be too confusing. Instead the function reference can
79// be used to do assignment with reference semantics. An assignment
80// with copy semantics makes no sense for a readonly column.
81// </synopsis>
82
83// <templating arg=T>
84// <li> Default constructor
85// <li> Copy constructor
86// <li> Assignment operator
87// </templating>
88
89// <example>
90// See module <linkto module="Tables#open">Tables</linkto>.
91// </example>
92
93template <class T>
95 public:
96 // The default constructor creates a null object, i.e. it
97 // does not reference a table column.
98 // The sole purpose of this constructor is to allow construction
99 // of an array of ArrayColumn objects.
100 // The functions reference and attach can be used to make a null object
101 // reference a column.
102 // Note that get functions, etc. will cause a segmentation fault
103 // when operating on a null object. It was felt it was too expensive
104 // to test on null over and over again. The user should use the isNull
105 // or throwIfNull function in case of doubt.
107
108 // Construct for the given column in the given table.
109 ArrayColumn(const Table&, const String& columnName);
110
111 // Construct from the given table column.
112 // This constructor is useful if first a table column was constructed,
113 // its type is determined and thereafter used to construct the
114 // correct column object.
115 explicit ArrayColumn(const TableColumn&);
116
117 // Copy constructor (reference semantics).
119
121
122 // Clone the object.
123 virtual TableColumn* clone() const;
124
125 // Assignment uses reference semantics, thus works the same
126 // as function reference.
128
129 // Change the reference to another column.
130 // This is in fact an assignment operator with reference semantics.
131 // It removes the reference to the current column and creates
132 // a reference to the column referenced in the other object.
133 // It will handle null objects correctly.
135
136 // Attach a column to the object.
137 // This is in fact only a shorthand for
138 // <br><src> reference (ArrayColumn<T> (table, columnName)); </src>
139 void attach(const Table& table, const String& columnName) {
140 reference(ArrayColumn<T>(table, columnName));
141 }
142
143 // Get the #dimensions of an array in a particular cell.
144 // If the cell does not contain an array, 0 is returned.
145 // Use the function isDefined to test if the cell contains an array.
146 uInt ndim(rownr_t rownr) const {
147 TABLECOLUMNCHECKROW(rownr);
148 return baseColPtr_p->ndim(rownr);
149 }
150
151 // Get the shape of an array in a particular cell.
152 // If the cell does not contain an array, a 0-dim shape is returned.
153 // Use the function isDefined to test if the cell contains an array.
154 IPosition shape(rownr_t rownr) const {
155 TABLECOLUMNCHECKROW(rownr);
156 return baseColPtr_p->shape(rownr);
157 }
158
159 // Get the array value in a particular cell (i.e. table row).
160 // The row numbers count from 0 until #rows-1.
161 // <group>
162 // According to the assignment rules of class Array, the destination
163 // array must be empty or its shape must conform the table array shape.
164 // However, if the resize flag is set the destination array will be
165 // resized if not conforming.
166 void get(rownr_t rownr, Array<T>& array, Bool resize = False) const;
167 Array<T> get(rownr_t rownr) const;
169 // </group>
170
171 // Get a slice of an N-dimensional array in a particular cell
172 // (i.e. table row).
173 // The row numbers count from 0 until #rows-1.
174 // The dimensionality of the slice must match the dimensionality
175 // of the table array and the slice definition should not exceed
176 // the shape of the table array.
177 // <group>
178 // According to the assignment rules of class Array, the destination
179 // array must be empty or its shape must conform the shape of the
180 // table array slice.
181 // However, if the resize flag is set the destination array will be
182 // resized if not conforming.
183 void getSlice(rownr_t rownr, const Slicer& arraySection, Array<T>& array,
184 Bool resize = False) const;
185 Array<T> getSlice(rownr_t rownr, const Slicer& arraySection) const;
186 // </group>
187
188 // Get an irregular slice of an N-dimensional array in a particular cell
189 // (i.e. table row) as given by the vectors of Slice objects.
190 // The outer vector represents the array axes.
191 // A missing or empty axis means the entire axis.
192 // The inner vector represents the slices to take for each axis.
193 // For example, to get slices from 2-dim arrays:
194 // <srcblock>
195 // Vector<Vector<Slice> > slices(2); // 2-dim
196 // slices[1].resize (3); // 3 slices in 2nd dim
197 // slices[1][0] = Slice(100,20);
198 // slices[1][1] = Slice(200,18);
199 // slices[1][2] = Slice(538,30,2);
200 // // Get data. Vector of first axis is empty, thus entire axis is read.
201 // Array<Complex> data = dataCol.getColumn (slices);
202 // </srcblock>
203 // If the column contains n-dim arrays, the resulting array is (n+1)-dim.
204 // with the last dimension representing the number of rows and the
205 // other dimensions representing the shape of the slice.
206 // The arrays in the column must have the same shape in all cells.
207 // <group>
208 // According to the assignment rules of class Array, the destination
209 // array must be empty or its shape must conform the resulting (n+1)-dim
210 // array.
211 // However, if the resize flag is set the destination array will be
212 // resized if not conforming.
213 void getSlice(rownr_t rownr, const Vector<Vector<Slice>>& arraySlices, Array<T>& arr,
214 Bool resize = False) const;
215 Array<T> getSlice(rownr_t rownr, const Vector<Vector<Slice>>& arraySlices) const;
216 // </group>
217
218 // Get the array of all values in a column.
219 // If the column contains n-dim arrays, the resulting array is (n+1)-dim
220 // with the last dimension representing the number of rows.
221 // The arrays in the column must have the same shape in all cells.
222 // <group>
223 // According to the assignment rules of class Array, the destination
224 // array must be empty or its shape must conform the resulting (n+1)-dim
225 // array.
226 // However, if the resize flag is set the destination array will be
227 // resized if not conforming.
228 void getColumn(Array<T>& array, Bool resize = False) const;
230 // </group>
231
232 // Get regular slices from all arrays in the column.
233 // If the column contains n-dim arrays, the resulting array is (n+1)-dim.
234 // with the last dimension representing the number of rows and the
235 // other dimensions representing the shape of the slice.
236 // The arrays in the column must have the same shape in all cells.
237 // <group>
238 // According to the assignment rules of class Array, the destination
239 // array must be empty or its shape must conform the resulting (n+1)-dim
240 // array.
241 // However, if the resize flag is set the destination array will be
242 // resized if not conforming.
243 void getColumn(const Slicer& arraySection, Array<T>& array, Bool resize = False) const;
244 Array<T> getColumn(const Slicer& arraySection) const;
245 // </group>
246
247 // Get irregular slices from all arrays in the column as given by the
248 // vectors of Slice objects. The outer vector represents the array axes.
249 // A missing or empty axis means the entire axis.
250 // The inner vector represents the slices to take for each axis.
251 // For example, to get slices from 2-dim arrays:
252 // <srcblock>
253 // Vector<Vector<Slice> > slices(2); // 2-dim
254 // slices[1].resize (3); // 3 slices in 2nd dim
255 // slices[1][0] = Slice(100,20);
256 // slices[1][1] = Slice(200,18);
257 // slices[1][2] = Slice(538,30,2);
258 // // Get data. Vector of first axis is empty, thus entire axis is read.
259 // Array<Complex> data = dataCol.getColumn (slices);
260 // </srcblock>
261 // If the column contains n-dim arrays, the resulting array is (n+1)-dim.
262 // with the last dimension representing the number of rows and the
263 // other dimensions representing the shape of the slice.
264 // The arrays in the column must have the same shape in all cells.
265 // <group>
266 // According to the assignment rules of class Array, the destination
267 // array must be empty or its shape must conform the resulting (n+1)-dim
268 // array.
269 // However, if the resize flag is set the destination array will be
270 // resized if not conforming.
271 void getColumn(const Vector<Vector<Slice>>& arraySection, Array<T>& array,
272 Bool resize = False) const;
273 Array<T> getColumn(const Vector<Vector<Slice>>& arraySection) const;
274 // </group>
275
276 // Get the array of some values in a column.
277 // The Slicer object can be used to specify start, end (or length),
278 // and stride of the rows to get.
279 // If the column contains n-dim arrays, the resulting array is (n+1)-dim
280 // with the last dimension representing the number of rows in the slicer.
281 // The arrays in the column must have the same shape in all those cells.
282 // According to the assignment rules of class Array, the destination
283 // array must be empty or its shape must conform the resulting (n+1)-dim
284 // array.
285 // However, if the resize flag is set the destination array will be
286 // resized if not conforming.
287 // <group>
288 void getColumnRange(const Slicer& rowRange, Array<T>& arr, Bool resize = False) const;
289 Array<T> getColumnRange(const Slicer& rowRange) const;
290 void getColumnCells(const RefRows& rownrs, Array<T>& arr, Bool resize = False) const;
291 Array<T> getColumnCells(const RefRows& rownrs) const;
292 // </group>
293
294 // Get slices from some arrays in a column.
295 // The first Slicer object can be used to specify start, end (or length),
296 // and stride of the rows to get. The second Slicer object can be
297 // used to specify the slice to take from each array.
298 // If the column contains n-dim arrays, the resulting array is (n+1)-dim
299 // with the last dimension representing the number of rows in the slicer.
300 // The arrays in the column must have the same shape in all those cells.
301 // According to the assignment rules of class Array, the destination
302 // array must be empty or its shape must conform the resulting (n+1)-dim
303 // array.
304 // However, if the resize flag is set the destination array will be
305 // resized if not conforming.
306 // <group>
307 void getColumnRange(const Slicer& rowRange, const Slicer& arraySection, Array<T>& arr,
308 Bool resize = False) const;
309 Array<T> getColumnRange(const Slicer& rowRange, const Slicer& arraySection) const;
310 void getColumnCells(const RefRows& rownrs, const Slicer& arraySection, Array<T>& arr,
311 Bool resize = False) const;
312 Array<T> getColumnCells(const RefRows& rownrs, const Slicer& arraySection) const;
313 // </group>
314
315 // Similar to getColumn (arraySlices, arr, resize) except it
316 // gets the slices for the given rows instead of all rows.
317 void getColumnCells(const RefRows& rows, const ColumnSlicer& slicerSet, Array<T>& destination,
318 Bool resize = False) const;
319
320 // Set the shape of the array in the given row.
321 // Setting the shape is needed if the array is put in slices,
322 // otherwise the table system would not know the shape.
323 // <group>
324 void setShape(rownr_t rownr, const IPosition& shape);
325
326 // Try to store the array in a tiled way using the given tile shape.
327 void setShape(rownr_t rownr, const IPosition& shape, const IPosition& tileShape);
328 // </group>
329
330 // Put the array in a particular cell (i.e. table row).
331 // The row numbers count from 0 until #rows-1.
332 // If the shape of the table array in that cell has not already been
333 // defined, it will be defined implicitly.
334 void put(rownr_t rownr, const Array<T>& array);
335
336 // Copy the value of a cell of that column to a cell of this column.
337 // This function uses a generic TableColumn object as input.
338 // The data types of both columns must be the same, otherwise an
339 // exception is thrown.
340 // <group>
341 // Use the same row numbers for both cells.
342 void put(rownr_t rownr, const TableColumn& that, Bool preserveTileShape = False) {
343 put(rownr, that, rownr, preserveTileShape);
344 }
345 // Use possibly different row numbers for that (i.e. input) and
346 // and this (i.e. output) cell.
347 void put(rownr_t thisRownr, const TableColumn& that, rownr_t thatRownr,
348 Bool preserveTileShape = False);
349 // For backward compatibility (otherwise ambigious with put taking Bool).
350 void put(uInt thisRownr, const TableColumn& that, uInt thatRownr,
351 Bool preserveTileShape = False) {
352 put(rownr_t(thisRownr), that, rownr_t(thatRownr), preserveTileShape);
353 }
354 // </group>
355
356 // Put into a slice of an N-dimensional array in a particular cell.
357 // The row numbers count from 0 until #rows-1.
358 // The shape of the table array must have been defined.
359 // The dimensionality of the slice must match the dimensionality
360 // of the table array and the slice definition should not exceed
361 // the shape of the table array.
362 void putSlice(rownr_t rownr, const Slicer& arraySection, const Array<T>& array);
363
364 void putSlice(rownr_t rownr, const Vector<Vector<Slice>>& arraySlices, const Array<T>& arr);
365
366 // Put the array of all values in the column.
367 // If the column contains n-dim arrays, the source array must be (n+1)-dim
368 // with the last dimension representing the number of rows.
370
371 // Put into subsections of the table arrays in the entire column.
372 // If the column contains n-dim arrays, the source array is (n+1)-dim
373 // with the last dimension representing the number of rows and
374 // other dimensions representing the shape of the slice.
375 // The dimensionality of the slice must match the dimensionality
376 // of the table array, thus must be n-dim. Also the slice definition
377 // should not exceed the shape of the table arrays.
378 void putColumn(const Slicer& arraySection, const Array<T>& array);
379
380 void putColumn(const Vector<Vector<Slice>>& arraySlices, const Array<T>& arr);
381
382 // Put the array of some values in the column.
383 // The Slicer object can be used to specify start, end (or length),
384 // and stride of the rows to put.
385 // If the column contains n-dim arrays, the source array must be (n+1)-dim
386 // with the last dimension representing the number of rows in the slicer.
387 // <group>
388 void putColumnRange(const Slicer& rowRange, const Array<T>& arr);
389 void putColumnCells(const RefRows& rownrs, const Array<T>& arr);
390 // </group>
391
392 // Put into subsection of the table arrays in some rows of the column.
393 // The first Slicer object can be used to specify start, end (or length),
394 // and stride of the rows to put. The second Slicer object can be
395 // used to specify the slice to take from each array.
396 // If the column contains n-dim arrays, the source array must be (n+1)-dim
397 // with the last dimension representing the number of rows in the slicer.
398 // <group>
399 void putColumnRange(const Slicer& rowRange, const Slicer& arraySection, const Array<T>& arr);
400 void putColumnCells(const RefRows& rownrs, const Slicer& arraySection, const Array<T>& arr);
401 // </group>
402
403 // Same as putColumn(arraySlices, arr) except that it puts for the given
404 // rows instead of all rows.
405 // <group>
406 void putColumnCells(const RefRows& rows, const Vector<Vector<Slice>>& arraySlices,
407 const Array<T>& arr);
408 void putSliceFromRows(const RefRows& rows, const Vector<Vector<Slice>>& arraySlices,
409 const Array<T>& source) {
410 putColumnCells(rows, arraySlices, source);
411 }
412 void putColumnCells(const RefRows& rows, const ColumnSlicer& columnSlicer,
413 const Array<T>& source);
414 // </group>
415
416 // Put the same value in all cells of the column.
418
419 // Put the contents of a column with the same data type into this column.
420 // To put the contents of a column with a different data type into
421 // this column, the function TableColumn::putColumn can be used
422 // (provided the data type promotion is possible).
423 // In fact, this function is an assignment operator with copy semantics.
424 void putColumn(const ArrayColumn<T>& that);
425
426 private:
427 // Check if the data type matches the column data type.
428 void checkDataType() const;
429};
430
431// # Explicitly instantiate these templates in ArrayColumn_tmpl.cc
432extern template class ArrayColumn<Bool>;
433extern template class ArrayColumn<Char>;
434extern template class ArrayColumn<Short>;
435extern template class ArrayColumn<uShort>;
436extern template class ArrayColumn<Int>;
437extern template class ArrayColumn<uInt>;
438extern template class ArrayColumn<Int64>;
439extern template class ArrayColumn<Float>;
440extern template class ArrayColumn<Double>;
441extern template class ArrayColumn<Complex>;
442extern template class ArrayColumn<DComplex>;
443extern template class ArrayColumn<String>;
444
445} // namespace casacore
446
447// # Make old name ROArrayColumn still available.
448#define ROArrayColumn ArrayColumn
449
450#ifndef CASACORE_NO_AUTO_TEMPLATES
451#include <casacore/tables/Tables/ArrayColumn.tcc>
452#endif // # CASACORE_NO_AUTO_TEMPLATES
453#endif
#define TABLECOLUMNCHECKROW(ROWNR)
Definition TableColumn.h:46
ArrayColumnBase()
The default constructor creates a null object, i.e.
void getColumnRange(const Slicer &rowRange, const Slicer &arraySection, Array< T > &arr, Bool resize=False) const
Get slices from some arrays in a column.
void putColumnRange(const Slicer &rowRange, const Array< T > &arr)
Put the array of some values in the column.
Array< T > getColumn(const Vector< Vector< Slice > > &arraySection) const
Array< T > getColumnCells(const RefRows &rownrs) const
void checkDataType() const
Check if the data type matches the column data type.
void getColumnCells(const RefRows &rows, const ColumnSlicer &slicerSet, Array< T > &destination, Bool resize=False) const
Similar to getColumn (arraySlices, arr, resize) except it gets the slices for the given rows instead ...
Array< T > operator()(rownr_t rownr) const
virtual TableColumn * clone() const
Clone the object.
void getColumnRange(const Slicer &rowRange, Array< T > &arr, Bool resize=False) const
Get the array of some values in a column.
void put(rownr_t rownr, const TableColumn &that, Bool preserveTileShape=False)
Copy the value of a cell of that column to a cell of this column.
Array< T > getSlice(rownr_t rownr, const Slicer &arraySection) const
ArrayColumn< T > & operator=(const ArrayColumn< T > &)
Assignment uses reference semantics, thus works the same as function reference.
void attach(const Table &table, const String &columnName)
Attach a column to the object.
void getColumnCells(const RefRows &rownrs, Array< T > &arr, Bool resize=False) const
void putColumn(const ArrayColumn< T > &that)
Put the contents of a column with the same data type into this column.
void putColumnCells(const RefRows &rows, const ColumnSlicer &columnSlicer, const Array< T > &source)
Array< T > get(rownr_t rownr) const
void put(rownr_t thisRownr, const TableColumn &that, rownr_t thatRownr, Bool preserveTileShape=False)
Use possibly different row numbers for that (i.e.
void getSlice(rownr_t rownr, const Vector< Vector< Slice > > &arraySlices, Array< T > &arr, Bool resize=False) const
Get an irregular slice of an N-dimensional array in a particular cell (i.e.
Array< T > getColumnCells(const RefRows &rownrs, const Slicer &arraySection) const
void setShape(rownr_t rownr, const IPosition &shape)
Set the shape of the array in the given row.
IPosition shape(rownr_t rownr) const
Get the shape of an array in a particular cell.
ArrayColumn(const ArrayColumn< T > &)
Copy constructor (reference semantics).
void put(uInt thisRownr, const TableColumn &that, uInt thatRownr, Bool preserveTileShape=False)
For backward compatibility (otherwise ambigious with put taking Bool).
void putColumnCells(const RefRows &rows, const Vector< Vector< Slice > > &arraySlices, const Array< T > &arr)
Same as putColumn(arraySlices, arr) except that it puts for the given rows instead of all rows.
void putColumnRange(const Slicer &rowRange, const Slicer &arraySection, const Array< T > &arr)
Put into subsection of the table arrays in some rows of the column.
Array< T > getColumnRange(const Slicer &rowRange, const Slicer &arraySection) const
void reference(const ArrayColumn< T > &)
Change the reference to another column.
void putColumnCells(const RefRows &rownrs, const Slicer &arraySection, const Array< T > &arr)
void putColumn(const Slicer &arraySection, const Array< T > &array)
Put into subsections of the table arrays in the entire column.
ArrayColumn(const TableColumn &)
Construct from the given table column.
void getColumn(const Slicer &arraySection, Array< T > &array, Bool resize=False) const
Get regular slices from all arrays in the column.
Array< T > getColumnRange(const Slicer &rowRange) const
void fillColumn(const Array< T > &value)
Put the same value in all cells of the column.
Array< T > getColumn() const
void getSlice(rownr_t rownr, const Slicer &arraySection, Array< T > &array, Bool resize=False) const
Get a slice of an N-dimensional array in a particular cell (i.e.
void putColumnCells(const RefRows &rownrs, const Array< T > &arr)
void putSlice(rownr_t rownr, const Slicer &arraySection, const Array< T > &array)
Put into a slice of an N-dimensional array in a particular cell.
void putSliceFromRows(const RefRows &rows, const Vector< Vector< Slice > > &arraySlices, const Array< T > &source)
void getColumnCells(const RefRows &rownrs, const Slicer &arraySection, Array< T > &arr, Bool resize=False) const
Array< T > getColumn(const Slicer &arraySection) const
ArrayColumn()
The default constructor creates a null object, i.e.
void putColumn(const Array< T > &array)
Put the array of all values in the column.
Array< T > getSlice(rownr_t rownr, const Vector< Vector< Slice > > &arraySlices) const
ArrayColumn(const Table &, const String &columnName)
Construct for the given column in the given table.
void getColumn(const Vector< Vector< Slice > > &arraySection, Array< T > &array, Bool resize=False) const
Get irregular slices from all arrays in the column as given by the vectors of Slice objects.
void putColumn(const Vector< Vector< Slice > > &arraySlices, const Array< T > &arr)
void setShape(rownr_t rownr, const IPosition &shape, const IPosition &tileShape)
Try to store the array in a tiled way using the given tile shape.
void get(rownr_t rownr, Array< T > &array, Bool resize=False) const
Get the array value in a particular cell (i.e.
void getColumn(Array< T > &array, Bool resize=False) const
Get the array of all values in a column.
void put(rownr_t rownr, const Array< T > &array)
Put the array in a particular cell (i.e.
void putSlice(rownr_t rownr, const Vector< Vector< Slice > > &arraySlices, const Array< T > &arr)
uInt ndim(rownr_t rownr) const
Get the #dimensions of an array in a particular cell.
String: the storage and methods of handling collections of characters.
Definition String.h:355
IPosition tileShape(rownr_t rownr) const
Get the tile shape of an array in a particular cell.
BaseColumn * baseColPtr_p
Table table() const
Get the Table object this column belongs to.
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
T * array
The actual storage.
Definition Block.h:689
unsigned int uInt
Definition aipstype.h:49
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
value_type & reference
Definition Block.h:592
NewDelAllocator< T > NewDelAllocator< T >::value
Definition Allocator.h:360
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44