casacore
Loading...
Searching...
No Matches
CompressComplex.h
Go to the documentation of this file.
1//# CompressComplex.h: Virtual column engine to scale a table Complex array
2//# Copyright (C) 2001,2002,2003
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_COMPRESSCOMPLEX_H
27#define TABLES_COMPRESSCOMPLEX_H
28
29//# Includes
30#include <casacore/casa/aips.h>
31#include <casacore/tables/DataMan/BaseMappedArrayEngine.h>
32#include <casacore/tables/Tables/ScalarColumn.h>
33#include <casacore/casa/Arrays/Array.h>
34#include <casacore/casa/BasicSL/Complex.h>
35
36
37namespace casacore { //# NAMESPACE CASACORE - BEGIN
38
39// <summary>
40// Virtual column engine to scale a table Complex array
41// </summary>
42
43// <use visibility=export>
44
45// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tCompressComplex.cc">
46// </reviewed>
47
48// <prerequisite>
49//# Classes you should understand before using this one.
50// <li> VirtualColumnEngine
51// <li> VirtualArrayColumn
52// </prerequisite>
53
54// <synopsis>
55// CompressComplex is a virtual column engine which scales an array
56// of one type to another type to save disk storage.
57// This resembles the classic AIPS compress method which scales the
58// data from Complex to int.
59// The scale factor and offset values can be given in two ways:
60// <ul>
61// <li> As a fixed values which is used for all arrays in the column.
62// These values have to be given when constructing of the engine.
63// <li> As the name of a column. In this way each array in the
64// column has its own scale and offset value.
65// By default it uses auto-scaling (see below).
66// Otherwise the scale and offset value in a row must be put
67// before the array is put and should not be changed anymore.
68// </ul>
69// Auto-scaling means that the engine will determine the scale
70// and offset value itself when an array (or a slice) is put.
71// It does it by mapping the values in the array to the range [-32767,32767].
72// At each put the scale/offset values are changed as needed.
73// Note that with auto-scaling <src>putSlice</src> can be somewhat
74// slower, because the entire array might need to be rescaled.
75//
76// As in FITS the scale and offset values are used as:
77// <br><src> True_value = Stored_value * scale + offset; </src>
78//
79// An engine object should be used for one column only, because the stored
80// column name is part of the engine. If it would be used for more than
81// one column, they would all share the same stored column.
82// When the engine is bound to a column, it is checked if the name
83// of that column matches the given virtual column name.
84//
85// The engine can be used for a column containing any kind of array
86// (thus direct or indirect, fixed or variable shaped)) as long as the
87// virtual array can be stored in the stored array. Thus a fixed shaped
88// virtual can use a variable shaped stored, but not vice versa.
89// A fixed shape indirect virtual can use a stored with direct arrays.
90//
91// This class can also serve as an example of how to implement
92// a virtual column engine.
93// </synopsis>
94
95// <motivation>
96// This class allows to store data in a smaller representation.
97// It is needed to resemble the classic AIPS compress option.
98//
99// Because the engine can serve only one column, it was possible to
100// combine the engine and the column functionality in one class.
101// </motivation>
102
103// <example>
104// <srcblock>
105// // Create the table description and 2 columns with indirect arrays in it.
106// // The Int column will be stored, while the double will be
107// // used as virtual.
108// TableDesc tableDesc ("", TableDesc::Scratch);
109// tableDesc.addColumn (ArrayColumnDesc<Int> ("storedArray"));
110// tableDesc.addColumn (ArrayColumnDesc<Complex> ("virtualArray"));
111// tableDesc.addColumn (ScalarColumnDesc<Complex> ("scale"));
112// tableDesc.addColumn (ScalarColumnDesc<Float> ("offset"));
113//
114// // Create a new table using the table description.
115// SetupNewTable newtab (tableDesc, "tab.data", Table::New);
116//
117// // Create the array scaling engine (with auto-scale)
118// // and bind it to the Complex column.
119// CompressComplex scalingEngine("virtualArray", "storedArray",
120// "scale", "offset");
121// newtab.bindColumn ("virtualArray", scalingEngine);
122// // Create the table.
123// Table table (newtab);
124//
125// // Store a 3-D array (with dim. 2,3,4) into each row of the column.
126// // The shape of each array in the column is implicitly set by the put
127// // function. This will also set the shape of the underlying Int array.
128// ArrayColumn data (table, "virtualArray");
129// Array<double> someArray(IPosition(4,2,3,4));
130// someArray = 0;
131// for (rownr_t i=0, i<10; i++) { // table will have 10 rows
132// table.addRow();
133// data.put (i, someArray)
134// }
135// </srcblock>
136// </example>
137
138class CompressComplex : public BaseMappedArrayEngine<Complex, Int>
139{
140public:
141
142 // Construct an engine to scale all arrays in a column with
143 // the given offset and scale factor.
144 // StoredColumnName is the name of the column where the scaled
145 // data will be put and must have data type Int.
146 // The virtual column using this engine must have data type Complex.
147 CompressComplex (const String& virtualColumnName,
148 const String& storedColumnName,
149 Float scale,
150 Float offset = 0);
151
152 // Construct an engine to scale the arrays in a column.
153 // The scale and offset values are taken from a column with
154 // the given names. In that way each array has its own scale factor
155 // and offset value.
156 // An exception is thrown if these columns do not exist.
157 // VirtualColumnName is the name of the virtual column and is used to
158 // check if the engine gets bound to the correct column.
159 // StoredColumnName is the name of the column where the scaled
160 // data will be put and must have data type Int.
161 // The virtual column using this engine must have data type Complex.
162 CompressComplex (const String& virtualColumnName,
163 const String& storedColumnName,
164 const String& scaleColumnName,
165 const String& offsetColumnName,
166 Bool autoScale = True);
167
168 // Construct from a record specification as created by getmanagerSpec().
169 CompressComplex (const Record& spec);
170
171 // Destructor is mandatory.
173
174 // Assignment is not needed and therefore forbidden
176
177 // Return the type name of the engine (i.e. its class name).
178 virtual String dataManagerType() const;
179
180 // Get the name given to the engine (is the virtual column name).
181 virtual String dataManagerName() const;
182
183 // Record a record containing data manager specifications.
184 virtual Record dataManagerSpec() const;
185
186 // Return the name of the class.
187 // This includes the names of the template arguments.
189
190 // Register the class name and the static makeObject "constructor".
191 // This will make the engine known to the table system.
192 static void registerClass();
193
194protected:
195 // Copy constructor is only used by clone() and derived class.
196 // (so it is made protected).
198
199private:
200 // Clone the engine object.
201 virtual DataManager* clone() const;
202
203protected:
204 // Initialize the object for a new table.
205 // It defines the keywords containing the engine parameters.
206 virtual void create64 (rownr_t initialNrrow);
207
208private:
209 // Preparing consists of setting the writable switch and
210 // adding the initial number of rows in case of create.
211 // Furthermore it reads the keywords containing the engine parameters.
212 virtual void prepare();
213
214 // Reopen the engine for read/write access.
215 // It makes the column writable if the underlying column is writable.
216 virtual void reopenRW();
217
218 // Add rows to the table.
219 // If auto-scaling, it initializes the scale column with 0
220 // to indicate that no data has been processed yet.
221 virtual void addRowInit (rownr_t startRow, rownr_t nrrow);
222
223 // Get an array in the given row.
224 // This will scale and offset from the underlying array.
225 virtual void getArray (rownr_t rownr, Array<Complex>& array);
226
227 // Put an array in the given row.
228 // This will scale and offset to the underlying array.
229 virtual void putArray (rownr_t rownr, const Array<Complex>& array);
230
231 // Get a section of the array in the given row.
232 // This will scale and offset from the underlying array.
233 virtual void getSlice (rownr_t rownr, const Slicer& slicer,
235
236 // Put into a section of the array in the given row.
237 // This will scale and offset to the underlying array.
238 virtual void putSlice (rownr_t rownr, const Slicer& slicer,
239 const Array<Complex>& array);
240
241 // Get an entire column.
242 // This will scale and offset from the underlying array.
244
245 // Put an entire column.
246 // This will scale and offset to the underlying array.
247 virtual void putArrayColumn (const Array<Complex>& array);
248
249 // Get some array values in the column.
250 // This will scale and offset from the underlying array.
251 virtual void getArrayColumnCells (const RefRows& rownrs,
252 Array<Complex>& data);
253
254 // Put some array values in the column.
255 // This will scale and offset to the underlying array.
256 virtual void putArrayColumnCells (const RefRows& rownrs,
257 const Array<Complex>& data);
258
259 // Get a section of all arrays in the column.
260 // This will scale and offset from the underlying array.
261 virtual void getColumnSlice (const Slicer& slicer, Array<Complex>& array);
262
263 // Put a section of all arrays in the column.
264 // This will scale and offset to the underlying array.
265 virtual void putColumnSlice (const Slicer& slicer,
266 const Array<Complex>& array);
267
268 // Get a section of some arrays in the column.
269 // This will scale and offset from the underlying array.
270 virtual void getColumnSliceCells (const RefRows& rownrs,
271 const Slicer& slicer,
272 Array<Complex>& data);
273
274 // Put into a section of some arrays in the column.
275 // This will scale and offset to the underlying array.
276 virtual void putColumnSliceCells (const RefRows& rownrs,
277 const Slicer& slicer,
278 const Array<Complex>& data);
279
280 // Scale and/or offset target to array.
281 // This is meant when reading an array from the stored column.
282 // It optimizes for scale=1 and/or offset=0.
283 virtual void scaleOnGet (Float scale, Float offset,
285 const Array<Int>& target);
286
287 // Scale and/or offset array to target.
288 // This is meant when writing an array into the stored column.
289 // It optimizes for scale=1 and/or offset=0.
290 virtual void scaleOnPut (Float scale, Float offset,
291 const Array<Complex>& array,
292 Array<Int>& target);
293
294 // Scale and/or offset target to array for the entire column.
295 // When the scale and offset are fixed, it will do the entire array.
296 // Otherwise it iterates through the array and applies the scale
297 // and offset per row.
299 const Array<Int>& target);
300
301 // Scale and/or offset array to target for the entire column.
302 // When the scale and offset are fixed, it will do the entire array.
303 // Otherwise it iterates through the array and applies the scale
304 // and offset per row.
306 Array<Int>& target);
307
308protected:
309 //# Now define the data members.
310 String scaleName_p; //# name of scale column
311 String offsetName_p; //# name of offset column
312 Float scale_p; //# fixed scale factor
313 Float offset_p; //# fixed offset value
314 Bool fixed_p; //# scale/offset is fixed
315 Bool autoScale_p; //# determine scale/offset automatically
316 ScalarColumn<Float>* scaleColumn_p; //# column with scale value
317 ScalarColumn<Float>* offsetColumn_p; //# column with offset value
318 Array<Int> buffer_p; //# buffer to avoid Array constructions
319 //# (makes multi-threading harder)
320
321 // Get the scale value for this row.
322 Float getScale (rownr_t rownr);
323
324 // Get the offset value for this row.
325 Float getOffset (rownr_t rownr);
326
327 // Find minimum and maximum from the array data.
328 // NaN and infinite values are ignored. If no values are finite,
329 // minimum and maximum are set to NaN.
330 virtual void findMinMax (Float& minVal, Float& maxVal,
331 const Array<Complex>& array) const;
332
333 // Make scale and offset from the minimum and maximum of the array data.
334 // If minVal is NaN, scale is set to 0.
335 void makeScaleOffset (Float& scale, Float& offset,
336 Float minVal, Float maxVal) const;
337
338 // Put a part of an array in a row using given scale/offset values.
339 void putPart (rownr_t rownr, const Slicer& slicer,
340 const Array<Complex>& array,
341 Float scale, Float offset);
342
343 // Fill the array part into the full array and put it using the
344 // given min/max values.
345 void putFullPart (rownr_t rownr, const Slicer& slicer,
346 Array<Complex>& fullArray,
347 const Array<Complex>& partArray,
348 Float minVal, Float maxVal);
349
350public:
351 // Define the "constructor" to construct this engine when a
352 // table is read back.
353 // This "constructor" has to be registered by the user of the engine.
354 // If the engine is commonly used, its registration can be added
355 // to the registerAllCtor function in DataManager.cc.
356 // That function gets automatically invoked by the table system.
358 const Record& spec);
359};
360
361
362
363
364// <summary>
365// Virtual column engine to scale a table Complex array for Single Dish data
366// </summary>
367
368// <use visibility=export>
369
370// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tCompressComplex.cc">
371// </reviewed>
372
373// <prerequisite>
374//# Classes you should understand before using this one.
375// <li> CompressComplex
376// </prerequisite>
377
378// <synopsis>
379// CompressComplexSD is similar to CompressComplex, but compresses
380// in a slighty different way optimized for single dish data.
381// Usually the imaginary part of single dish data is 0, so the scaling
382// is optimized for it.
383// <br>If the imaginary part is 0, the real part is scaled with 15 bits
384// extra to get a higher precision. The least significant bit is set to 0
385// indicating the imag==0.
386// <br>If the imaginary part is not 0, the real part is scaled normally.
387// The imaginary part is scaled with 1 bit less. The least significant bit
388// is set to 1 indicating that imag!=0.
389// </synopsis>
390
391// <motivation>
392// This class is created on top of CompressComplex to cope with SD data
393// in a better way. Using CompressComplex often makes the imag part non-zero
394// if it is scaled as 0.
395// </motivation>
396
397// <example>
398// <srcblock>
399// // Create the table description and 2 columns with indirect arrays in it.
400// // The Int column will be stored, while the double will be
401// // used as virtual.
402// TableDesc tableDesc ("", TableDesc::Scratch);
403// tableDesc.addColumn (ArrayColumnDesc<Int> ("storedArray"));
404// tableDesc.addColumn (ArrayColumnDesc<Complex> ("virtualArray"));
405// tableDesc.addColumn (ScalarColumnDesc<Complex> ("scale"));
406// tableDesc.addColumn (ScalarColumnDesc<Float> ("offset"));
407//
408// // Create a new table using the table description.
409// SetupNewTable newtab (tableDesc, "tab.data", Table::New);
410//
411// // Create the array scaling engine (with auto-scale)
412// // and bind it to the Complex column.
413// CompressComplexSD scalingEngine("virtualArray", "storedArray",
414// "scale", "offset");
415// newtab.bindColumn ("virtualArray", scalingEngine);
416// // Create the table.
417// Table table (newtab);
418//
419// // Store a 3-D array (with dim. 2,3,4) into each row of the column.
420// // The shape of each array in the column is implicitly set by the put
421// // function. This will also set the shape of the underlying Int array.
422// ArrayColumn data (table, "virtualArray");
423// Array<double> someArray(IPosition(4,2,3,4));
424// someArray = 0;
425// for (rownr_t i=0, i<10; i++) { // table will have 10 rows
426// table.addRow();
427// data.put (i, someArray)
428// }
429// </srcblock>
430// </example>
431
433{
434public:
435
436 // Construct an engine to scale all arrays in a column with
437 // the given offset and scale factor.
438 // StoredColumnName is the name of the column where the scaled
439 // data will be put and must have data type Int.
440 // The virtual column using this engine must have data type Complex.
441 CompressComplexSD (const String& virtualColumnName,
442 const String& storedColumnName,
443 Float scale,
444 Float offset = 0);
445
446 // Construct an engine to scale the arrays in a column.
447 // The scale and offset values are taken from a column with
448 // the given names. In that way each array has its own scale factor
449 // and offset value.
450 // An exception is thrown if these columns do not exist.
451 // VirtualColumnName is the name of the virtual column and is used to
452 // check if the engine gets bound to the correct column.
453 // StoredColumnName is the name of the column where the scaled
454 // data will be put and must have data type Int.
455 // The virtual column using this engine must have data type Complex.
456 CompressComplexSD (const String& virtualColumnName,
457 const String& storedColumnName,
458 const String& scaleColumnName,
459 const String& offsetColumnName,
460 Bool autoScale = True);
461
462 // Construct from a record specification as created by getmanagerSpec().
464
465 // Destructor is mandatory.
467
468 // Assignment is not needed and therefore forbidden
470
471 // Return the type name of the engine (i.e. its class name).
472 virtual String dataManagerType() const;
473
474 // Return the name of the class.
475 // This includes the names of the template arguments.
477
478 // Register the class name and the static makeObject "constructor".
479 // This will make the engine known to the table system.
480 static void registerClass();
481
482private:
483 // Copy constructor is only used by clone().
484 // (so it is made private).
486
487 // Clone the engine object.
488 virtual DataManager* clone() const;
489
490 // Initialize the object for a new table.
491 // It defines the keywords containing the engine parameters.
492 virtual void create64 (rownr_t initialNrrow);
493
494 // Scale and/or offset target to array.
495 // This is meant when reading an array from the stored column.
496 // It optimizes for scale=1 and/or offset=0.
497 virtual void scaleOnGet (Float scale, Float offset,
499 const Array<Int>& target);
500
501 // Scale and/or offset array to target.
502 // This is meant when writing an array into the stored column.
503 // It optimizes for scale=1 and/or offset=0.
504 virtual void scaleOnPut (Float scale, Float offset,
505 const Array<Complex>& array,
506 Array<Int>& target);
507
508 // Find minimum and maximum from the array data.
509 // NaN and infinite values and zero imaginary parts are ignored.
510 // If no values are finite, minimum and maximum are set to NaN.
511 virtual void findMinMax (Float& minVal, Float& maxVal,
512 const Array<Complex>& array) const;
513
514public:
515 // Define the "constructor" to construct this engine when a
516 // table is read back.
517 // This "constructor" has to be registered by the user of the engine.
518 // If the engine is commonly used, its registration can be added
519 // to the registerAllCtor function in DataManager.cc.
520 // That function gets automatically invoked by the table system.
522 const Record& spec);
523};
524
525
526
527
529{
530 return (fixed_p ? scale_p : (*scaleColumn_p)(rownr));
531}
533{
534 return (fixed_p ? offset_p : (*offsetColumn_p)(rownr));
535}
536
537
538
539} //# NAMESPACE CASACORE - END
540
541#endif
Virtual column engine to scale a table Complex array for Single Dish data.
CompressComplexSD(const String &virtualColumnName, const String &storedColumnName, const String &scaleColumnName, const String &offsetColumnName, Bool autoScale=True)
Construct an engine to scale the arrays in a column.
virtual void create64(rownr_t initialNrrow)
Initialize the object for a new table.
virtual void findMinMax(Float &minVal, Float &maxVal, const Array< Complex > &array) const
Find minimum and maximum from the array data.
static void registerClass()
Register the class name and the static makeObject "constructor".
static String className()
Return the name of the class.
~CompressComplexSD()
Destructor is mandatory.
virtual void scaleOnPut(Float scale, Float offset, const Array< Complex > &array, Array< Int > &target)
Scale and/or offset array to target.
static DataManager * makeObject(const String &dataManagerType, const Record &spec)
Define the "constructor" to construct this engine when a table is read back.
virtual DataManager * clone() const
Clone the engine object.
CompressComplexSD & operator=(const CompressComplexSD &)=delete
Assignment is not needed and therefore forbidden.
CompressComplexSD(const String &virtualColumnName, const String &storedColumnName, Float scale, Float offset=0)
Construct an engine to scale all arrays in a column with the given offset and scale factor.
virtual void scaleOnGet(Float scale, Float offset, Array< Complex > &array, const Array< Int > &target)
Scale and/or offset target to array.
CompressComplexSD(const Record &spec)
Construct from a record specification as created by getmanagerSpec().
virtual String dataManagerType() const
Return the type name of the engine (i.e.
CompressComplexSD(const CompressComplexSD &)
Copy constructor is only used by clone().
CompressComplex(const CompressComplex &)
Copy constructor is only used by clone() and derived class.
virtual void putArrayColumnCells(const RefRows &rownrs, const Array< Complex > &data)
Put some array values in the column.
void putFullPart(rownr_t rownr, const Slicer &slicer, Array< Complex > &fullArray, const Array< Complex > &partArray, Float minVal, Float maxVal)
Fill the array part into the full array and put it using the given min/max values.
CompressComplex & operator=(const CompressComplex &)=delete
Assignment is not needed and therefore forbidden.
virtual String dataManagerName() const
Get the name given to the engine (is the virtual column name).
virtual DataManager * clone() const
Clone the engine object.
CompressComplex(const String &virtualColumnName, const String &storedColumnName, Float scale, Float offset=0)
Construct an engine to scale all arrays in a column with the given offset and scale factor.
static void registerClass()
Register the class name and the static makeObject "constructor".
CompressComplex(const String &virtualColumnName, const String &storedColumnName, const String &scaleColumnName, const String &offsetColumnName, Bool autoScale=True)
Construct an engine to scale the arrays in a column.
virtual void getArrayColumn(Array< Complex > &array)
Get an entire column.
virtual void getSlice(rownr_t rownr, const Slicer &slicer, Array< Complex > &array)
Get a section of the array in the given row.
void putPart(rownr_t rownr, const Slicer &slicer, const Array< Complex > &array, Float scale, Float offset)
Put a part of an array in a row using given scale/offset values.
ScalarColumn< Float > * scaleColumn_p
virtual void putColumnSliceCells(const RefRows &rownrs, const Slicer &slicer, const Array< Complex > &data)
Put into a section of some arrays in the column.
virtual void getColumnSliceCells(const RefRows &rownrs, const Slicer &slicer, Array< Complex > &data)
Get a section of some arrays in the column.
void makeScaleOffset(Float &scale, Float &offset, Float minVal, Float maxVal) const
Make scale and offset from the minimum and maximum of the array data.
static DataManager * makeObject(const String &dataManagerType, const Record &spec)
Define the "constructor" to construct this engine when a table is read back.
CompressComplex(const Record &spec)
Construct from a record specification as created by getmanagerSpec().
virtual void scaleOnPut(Float scale, Float offset, const Array< Complex > &array, Array< Int > &target)
Scale and/or offset array to target.
virtual void getColumnSlice(const Slicer &slicer, Array< Complex > &array)
Get a section of all arrays in the column.
virtual Record dataManagerSpec() const
Record a record containing data manager specifications.
virtual void putArray(rownr_t rownr, const Array< Complex > &array)
Put an array in the given row.
virtual void addRowInit(rownr_t startRow, rownr_t nrrow)
Add rows to the table.
void scaleColumnOnGet(Array< Complex > &array, const Array< Int > &target)
Scale and/or offset target to array for the entire column.
virtual void putSlice(rownr_t rownr, const Slicer &slicer, const Array< Complex > &array)
Put into a section of the array in the given row.
virtual void findMinMax(Float &minVal, Float &maxVal, const Array< Complex > &array) const
Find minimum and maximum from the array data.
virtual void putArrayColumn(const Array< Complex > &array)
Put an entire column.
virtual void scaleOnGet(Float scale, Float offset, Array< Complex > &array, const Array< Int > &target)
Scale and/or offset target to array.
Float getScale(rownr_t rownr)
Get the scale value for this row.
virtual void reopenRW()
Reopen the engine for read/write access.
virtual void getArray(rownr_t rownr, Array< Complex > &array)
Get an array in the given row.
ScalarColumn< Float > * offsetColumn_p
virtual void prepare()
Preparing consists of setting the writable switch and adding the initial number of rows in case of cr...
virtual void create64(rownr_t initialNrrow)
Initialize the object for a new table.
void scaleColumnOnPut(const Array< Complex > &array, Array< Int > &target)
Scale and/or offset array to target for the entire column.
static String className()
Return the name of the class.
Float getOffset(rownr_t rownr)
Get the offset value for this row.
virtual void getArrayColumnCells(const RefRows &rownrs, Array< Complex > &data)
Get some array values in the column.
virtual String dataManagerType() const
Return the type name of the engine (i.e.
virtual void putColumnSlice(const Slicer &slicer, const Array< Complex > &array)
Put a section of all arrays in the column.
~CompressComplex()
Destructor is mandatory.
Abstract base class for a data manager.
String: the storage and methods of handling collections of characters.
Definition String.h:223
this file contains all the compiler specific defines
Definition mainpage.dox:28
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
Definition ExprNode.h:1933
float Float
Definition aipstype.h:52
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
const Bool True
Definition aipstype.h:41
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44