casacore
Loading...
Searching...
No Matches
PagedImage.h
Go to the documentation of this file.
1// # PagedImage.h: read, store and manipulate astronomical images
2// # Copyright (C) 1994,1995,1996,1997,1998,1999,2000,2001,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 IMAGES_PAGEDIMAGE_H
27#define IMAGES_PAGEDIMAGE_H
28
29// # Includes
30#include <casacore/casa/aips.h>
31#include <casacore/images/Images/ImageInterface.h>
32#include <casacore/images/Images/ImageAttrHandlerCasa.h>
33#include <casacore/lattices/Lattices/PagedArray.h>
34#include <casacore/tables/Tables/Table.h>
35#include <casacore/casa/Utilities/DataType.h>
36#include <casacore/tables/Tables/TableRecord.h>
37
38// # Forward Declarations
39#include <casacore/casa/iosfwd.h>
40
41namespace casacore { // # NAMESPACE CASACORE - BEGIN
42
43// <summary>
44// Read, store, and manipulate astronomical images.
45// </summary>
46
47// <use visibility=export>
48
49// <reviewed reviewer="" date="" tests="tPagedmage.cc" demos="dPagedImage.cc">
50// </reviewed>
51
52// <prerequisite>
53// <li> <linkto class=CoordinateSystem>CoordinateSystem</linkto>
54// <li> <linkto class=ImageInterface>ImageInterface</linkto>
55// <li> <linkto class=Lattice>Lattice</linkto>
56// <li> <linkto class=LatticeIterator>LatticeIterator</linkto>
57// <li> <linkto class=LatticeNavigator>LatticeNavigator</linkto>
58// <li> <linkto class=ImageRegion>ImageRegion</linkto>
59// </prerequisite>
60
61// <etymology>
62// The PagedImage name comes from its role as the Image class with paging
63// from persistent memory. Users are thus invited to treat the
64// PagedImage instances like Casacore Lattices
65// </etymology>
66
67// <synopsis>
68// All Casacore Images are Lattices. They may be treated like any other Lattice;
69// getSlice(...), putSlice(...), LatticeIterator for iterating, etc.
70// ArrayImages contain a map, a mask for that map, and coordinate
71// information. This provides a Lattice interface for images and their
72// respective coordinates. Additional functionality is defined by the
73// ImageInterface class.
74//
75// You can use the global function <src>imagePixelType</src> to determine
76// what the pixel type of an image is before you open the image if your
77// code can work with Images of many possible types, or for error checking.
78//
79// </synopsis>
80
81// <example>
82// This example shows how to create a mask for an image, fill it, and
83// make it known to the image.
84// <srcblock>
85// // Open the image (as readonly for the moment).
86// PagedImage<Float> myimage ("image.name");
87// // Create a mask for the image.
88// // The mask will be stored in a subtable of the image.
89// LCPagedMask mask (RegionHandler::makeMask (myimage, "mask.name"));
90// // Fill the mask with whatever values (e.g. all True).
91// mask.set (True);
92// // Make the mask known to the image (with name mask1).
93// myimage.defineRegion ("mask1", mask, RegionHandler::Masks);
94// // Make the mask the default mask for this image.
95// myimage.setDefaultMask ("mask1");
96// </srcblock>
97// It is possible to create as many masks as one likes. They can all
98// be defined as masks for the image (with different names, of course).
99// However, only one of them can be the default mask (the mask used
100// by default when the image is opened). When another mask has to be
101// used, one can do two things:
102// <ul>
103// <li> Use setDefaultMask to make the other mask the default mask.
104// This is advisable when the change should be more or less permanent.
105// <li> Open the PagedImage without using a default mask. Thereafter
106// a <linkto class=SubImage>SubImage</linkto> object can be created
107// from the PagedImage and the mask. This is advisable when it the
108// mask has to be used only one time.
109// </ul>
110// </example>
111
112// <motivation>
113// The size of astronomical data can be very large. The ability to fit an
114// entire image into random access memory cannot be guaranteed. Paging from
115// disk pieces of the image appeared to be the way to deal with this problem.
116// </motivation>
117
118//
119// <note>
120// When you make a new PagedImage, and you are transferring
121// information from some other PagedImage, be aware that you
122// must copy, manually, things like miscInfo, imageInfo, units,
123// logSink (history) to the new file.
124// </note>
125// <todo asof="1996/09/04">
126// <li> The CoordinateSystem::store() function returns a TableRecord. That
127// TableRecord should be stored in the same row as our image. This will
128// allow ImageStack members to have their own coordinate frames.
129// </todo>
130
131template <class T>
132class PagedImage : public ImageInterface<T> {
133 public:
134 // Construct a new Image from shape and coordinate information.
135 // Data will be stored in the argument table.
136 PagedImage(const TiledShape& mapShape, const CoordinateSystem& coordinateInfo, Table& table,
137 uInt rowNumber = 0);
138
139 // Construct a new Image from shape and coordinate information. Table
140 // will be stored in the named file.
141 PagedImage(const TiledShape& mapShape, const CoordinateSystem& coordinateInfo,
142 const String& nameOfNewFile, uInt rowNumber = 0);
143
144 // Construct a new Image from shape and coordinate information. Table
145 // will be stored in the named file.
146 // The lock options may be specified
147 // <group>
148 PagedImage(const TiledShape& mapShape, const CoordinateSystem& coordinateInfo,
149 const String& nameOfNewFile, TableLock::LockOption, uInt rowNumber = 0);
150 PagedImage(const TiledShape& mapShape, const CoordinateSystem& coordinateInfo,
151 const String& nameOfNewFile, const TableLock& lockOptions, uInt rowNumber = 0);
152 // </group>
153
154 // Reconstruct an image from a pre-existing file.
155 // By default the default pixelmask (if available) is used.
157
158 // Reconstruct an image from a pre-existing file.
159 // By default the default pixelmask (if available) is used.
160 explicit PagedImage(const String& filename, MaskSpecifier = MaskSpecifier(), uInt rowNumber = 0);
161
162 // Reconstruct an image from a pre-existing file with Locking.
163 // By default the default pixelmask (if available) is used.
164 // <group>
166 uInt rowNumber = 0);
167 PagedImage(const String& filename, const TableLock& lockOptions, MaskSpecifier = MaskSpecifier(),
168 uInt rowNumber = 0);
169 // </group>
170
171 // Copy constructor (reference semantics).
173
175
176 // Assignment operator (reference semantics).
178
179 // Make a copy of the object (reference semantics).
180 virtual ImageInterface<T>* cloneII() const;
181
182 // Return the name of this derived class.
183 static String className() { return "PagedImage"; }
184
185 // Get the image type (returns name of this derived class).
186 virtual String imageType() const;
187
188 // A PagedImage is always persistent.
189 virtual Bool isPersistent() const;
190
191 // A PagedImage is always paged to disk.
192 virtual Bool isPaged() const;
193
194 // Is the PagedImage writable?
195 virtual Bool isWritable() const;
196
197 // Does the image object use a pixelmask?
198 virtual Bool hasPixelMask() const;
199
200 // Get access to the pixelmask used.
201 // An exception is thrown if the image does not use a pixelmask.
202 // <group>
203 virtual const Lattice<Bool>& pixelMask() const;
205 // </group>
206
207 // Get a pointer the default pixelmask object used with this image.
208 // It returns 0 if no default pixelmask is used.
209 virtual const LatticeRegion* getRegionPtr() const;
210
211 // Set the default pixelmask to the mask with the given name
212 // (which has to exist in the "masks" group).
213 // If the image table is writable, the setting is persistent by writing
214 // the name as a keyword.
215 // If the given regionName is the empty string,
216 // the default pixelmask is unset.
217 virtual void setDefaultMask(const String& maskName);
218
219 // Use the mask as specified.
220 // If a mask was already in use, it is replaced by the new one.
222
223 // Function to change the name of the Table file on disk.
224 // PagedImage is given a file name at construction time. You may change
225 // that name here.
226 void rename(const String& newName);
227
228 // Return the current Table name. By default this includes the full path.
229 // the path preceding the file name can be stripped off on request.
230 virtual String name(Bool stripPath = False) const;
231
232 // Return the current TableColumn row number.
234
235 // Return the shape of the image.
236 virtual IPosition shape() const;
237
238 // Change the shape of the image (N.B. the data is thrown away).
239 virtual void resize(const TiledShape& newShape);
240
241 // Function which extracts an array from the map.
242 virtual Bool doGetSlice(Array<T>& buffer, const Slicer& theSlice);
243
244 // Function to replace the values in the map with soureBuffer.
245 virtual void doPutSlice(const Array<T>& sourceBuffer, const IPosition& where,
246 const IPosition& stride);
247
248 // Replace every element, x, of the lattice with the result of f(x).
249 // you must pass in the address of the function -- so the function
250 // must be declared and defined in the scope of your program.
251 // Both versions of apply require a function that accepts a single
252 // argument of type T (the Lattice template actual type) and returns
253 // a result of the same type. The first apply expects a function with
254 // an argument passed by value; the second expects the argument to
255 // be passed by const reference. The first form ought to run faster
256 // for the built-in types, which may be an issue for large Lattices
257 // stored in memory, where disk access is not an issue.
258 // <group>
259 virtual void apply(T (*function)(T));
260 virtual void apply(T (*function)(const T&));
261 virtual void apply(const Functional<T, T>& function);
262 // </group>
263
264 // Add a lattice to this image.
266
267 // Function which sets the units associated with the image
268 // pixels (i.e. the "brightness" unit). <src>setUnits()</src> returns
269 // False if it cannot set the unit for some reason (e.g. the underlying
270 // file is not writable).
271 virtual Bool setUnits(const Unit& newUnits);
272
273 // Return the table holding the data.
274 Table& table() { return map_p.table(); }
275
276 // Flushes the new coordinate system to disk if the table is writable.
278
279 // Check for symmetry in data members.
280 virtual Bool ok() const;
281
282 // These are the true implementations of the paran operator.
283 // <note> Not for public use </note>
284 // <group>
285 virtual T getAt(const IPosition& where) const;
286 virtual void putAt(const T& value, const IPosition& where);
287 // </group>
288
289 // Replace the miscinfo in the PagedImage.
290 // It can fail if, e.g., the underlying table is not writable.
291 virtual Bool setMiscInfo(const RecordInterface& newInfo);
292
293 // The ImageInfo object contains some miscellaneous information about the
294 // image, which unlike that stored in MiscInfo, has a standard list of
295 // things, such as the restoring beam.
296 // Note that setImageInfo REPLACES the information with the new information.
297 // It can fail if, e.g., the underlying table is not writable.
298 virtual Bool setImageInfo(const ImageInfo& info);
299
300 // Get access to the attribute handler.
301 // If a handler keyword does not exist yet, it is created if
302 // <src>createHandler</src> is set.
303 // Otherwise the handler is empty and no groups can be created for it.
304 virtual ImageAttrHandler& attrHandler(Bool createHandler = False);
305
306 // Remove a region/mask belonging to the image from the given group
307 // (which can be Any).
308 // If a mask removed is the default mask, the image gets unmasked.
309 // <br>Optionally an exception is thrown if the region does not exist.
311 Bool throwIfUnknown = True);
312
313 // This is the implementation of the letter for the envelope Iterator
314 // class. <note> Not for public use </note>.
315 virtual LatticeIterInterface<T>* makeIter(const LatticeNavigator& navigator, Bool useRef) const;
316
317 // Returns the maximum recommended number of pixels for a cursor. This is
318 // the number of pixels in a tile.
319 virtual uInt advisedMaxPixels() const;
320
321 // Help the user pick a cursor for most efficient access.
322 virtual IPosition doNiceCursorShape(uInt maxPixels) const;
323
324 // Maximum size - not necessarily all used. In pixels.
325 virtual uInt maximumCacheSize() const;
326
327 // Set the maximum (allowed) cache size as indicated.
328 virtual void setMaximumCacheSize(uInt howManyPixels);
329
330 // Set the cache size as to "fit" the indicated path.
331 virtual void setCacheSizeFromPath(const IPosition& sliceShape, const IPosition& windowStart,
332 const IPosition& windowLength, const IPosition& axisPath);
333
334 // Set the actual cache size for this Array to be be big enough for the
335 // indicated number of tiles. This cache is not shared with PagedArrays
336 // in other rows and is always clipped to be less than the maximum value
337 // set using the setMaximumCacheSize member function.
338 // tiles. Tiles are cached using a first in first out algorithm.
339 virtual void setCacheSizeInTiles(uInt howManyTiles);
340
341 // Clears and frees up the caches, but the maximum allowed cache size is
342 // unchanged from when setCacheSize was called
343 virtual void clearCache();
344
345 // Report on cache success.
346 virtual void showCacheStatistics(ostream& os) const;
347
348 // Handle the (un)locking.
349 // Unlocking also unlocks the logtable and a possible mask table.
350 // Locking only locks the image itself.
351 // <group>
352 virtual Bool lock(FileLocker::LockType, uInt nattempts);
353 virtual void unlock();
355 // </group>
356
357 // Resynchronize the PagedImage object with the table contents.
358 // The logtable and possible mask table are also synchronized if
359 // they do not have a readlock.
360 // <br>This function is only useful if no read-locking is used, ie.
361 // if the table lock option is UserNoReadLocking or AutoNoReadLocking.
362 // In that cases the table system does not acquire a read-lock, thus
363 // does not synchronize itself automatically.
364 virtual void resync();
365
366 // Flush the data.
367 virtual void flush();
368
369 // Close the Image and associated files temporarily.
370 // It'll be reopened automatically when needed or when
371 // <src>reopen</src> is called explicitly.
372 virtual void tempClose();
373
374 // If needed, reopen a temporarily closed Image.
375 virtual void reopen();
376
377 private:
378 // Function to return the internal Table object to the RegionHandler.
379 static Table& getTable(void* imagePtr, Bool writable);
380
381 // This must be called in every constructor and place where the image
382 // is attached to a new image.
385 void restoreUnits(const TableRecord& rec);
386 void restoreMiscInfo(const TableRecord& rec);
388 void restoreAll(const TableRecord& rec);
389
390 void check_conformance(const Lattice<T>& other);
391 void reopenRW();
394 void applyMask(const String& maskName);
395 void makePagedImage(const TiledShape& mapShape, const CoordinateSystem& coordinateInfo,
396 const String& nameOfNewFile, const TableLock& lockOptions, uInt rowNumber);
397 void makePagedImage(const String& filename, const TableLock& lockOptions, const MaskSpecifier&,
399
400 const Table& table() const { return const_cast<PagedImage<T>*>(this)->table(); }
401
405
406 // # Make members of parent class known.
407 public:
409 using ImageInterface<T>::logger;
415
416 protected:
422};
423
424// # A nasty - the column name is hard-coded into this function, needs to
425// # be centralized somewhere.
426// Determine the pixel type in the PagedImage contained in
427// <src>fileName</src>. If the file doesn't appear to be a Table or cannot
428// be opened, TpOther is returned.
429// <group name="pixeltype")
430DataType imagePixelType(const String& fileName);
431// </group>
432
433// # Declare extern templates for often used types.
434extern template class PagedImage<Float>;
435extern template class PagedImage<Complex>;
436
437} // namespace casacore
438
439#ifndef CASACORE_NO_AUTO_TEMPLATES
440#include <casacore/images/Images/PagedImage.tcc>
441#endif // # CASACORE_NO_AUTO_TEMPLATES
442#endif
LockType
Define the possible lock types.
Definition FileLocker.h:89
LogIO & logSink()
Allow messages to be logged to this ImageInterface.
void setCoordsMember(const CoordinateSystem &coords)
Set the coordinate system variable.
LoggerHolder & logger()
Get access to the LoggerHolder.
void setLogMember(const LoggerHolder &logger)
Set the image logger variable.
const ImageInfo & imageInfo() const
The ImageInfo object contains some miscellaneous information about the image which unlike that stored...
virtual String getDefaultMask() const
Get the name of the default pixelmask.
virtual ImageRegion * getImageRegionPtr(const String &name, RegionHandler::GroupType=RegionHandler::Any, Bool throwIfUnknown=True) const
Get a region/mask belonging to the image from the given group (which can be Any).
void setImageInfoMember(const ImageInfo &imageInfo)
Set the image info variable.
virtual Bool hasRegion(const String &regionName, RegionHandler::GroupType=RegionHandler::Any) const
Does the image have a region with the given name?
void setMiscInfoMember(const RecordInterface &rec)
Set the miscinfo variable.
const CoordinateSystem & coordinates() const
void setUnitMember(const Unit &unit)
Set the unit variable.
void restoreMiscInfo(const TableRecord &rec)
LatticeRegion * regionPtr_p
Definition PagedImage.h:403
virtual void reopen()
If needed, reopen a temporarily closed Image.
uInt rowNumber() const
Return the current TableColumn row number.
virtual IPosition shape() const
Return the shape of the image.
PagedImage(const PagedImage< T > &other)
Copy constructor (reference semantics).
PagedImage(const TiledShape &mapShape, const CoordinateSystem &coordinateInfo, Table &table, uInt rowNumber=0)
Construct a new Image from shape and coordinate information.
virtual void clearCache()
Clears and frees up the caches, but the maximum allowed cache size is unchanged from when setCacheSiz...
virtual Bool setCoordinateInfo(const CoordinateSystem &coords)
Flushes the new coordinate system to disk if the table is writable.
virtual void useMask(MaskSpecifier=MaskSpecifier())
Use the mask as specified.
virtual uInt advisedMaxPixels() const
Returns the maximum recommended number of pixels for a cursor.
virtual void apply(T(*function)(T))
Replace every element, x, of the lattice with the result of f(x).
virtual Bool isPersistent() const
A PagedImage is always persistent.
virtual String name(Bool stripPath=False) const
Return the current Table name.
virtual void apply(const Functional< T, T > &function)
virtual void resize(const TiledShape &newShape)
Change the shape of the image (N.B.
virtual void resync()
Resynchronize the PagedImage object with the table contents.
PagedImage(Table &table, MaskSpecifier=MaskSpecifier(), uInt rowNumber=0)
Reconstruct an image from a pre-existing file.
virtual void putAt(const T &value, const IPosition &where)
Put the value of a single element.
virtual void setDefaultMask(const String &maskName)
Set the default pixelmask to the mask with the given name (which has to exist in the "masks" group).
virtual void setCacheSizeFromPath(const IPosition &sliceShape, const IPosition &windowStart, const IPosition &windowLength, const IPosition &axisPath)
Set the cache size as to "fit" the indicated path.
Table & table()
Return the table holding the data.
Definition PagedImage.h:274
virtual Bool isPaged() const
A PagedImage is always paged to disk.
virtual void removeRegion(const String &name, RegionHandler::GroupType=RegionHandler::Any, Bool throwIfUnknown=True)
Remove a region/mask belonging to the image from the given group (which can be Any).
PagedArray< T > map_p
Definition PagedImage.h:402
virtual ImageAttrHandler & attrHandler(Bool createHandler=False)
Get access to the attribute handler.
void applyMaskSpecifier(const MaskSpecifier &)
void rename(const String &newName)
Function to change the name of the Table file on disk.
virtual Bool setMiscInfo(const RecordInterface &newInfo)
Replace the miscinfo in the PagedImage.
virtual void apply(T(*function)(const T &))
virtual void showCacheStatistics(ostream &os) const
Report on cache success.
PagedImage(const String &filename, MaskSpecifier=MaskSpecifier(), uInt rowNumber=0)
Reconstruct an image from a pre-existing file.
static String className()
Return the name of this derived class.
Definition PagedImage.h:183
ImageAttrHandlerCasa itsAttrHandler
Definition PagedImage.h:404
virtual Bool isWritable() const
Is the PagedImage writable?
virtual ImageInterface< T > * cloneII() const
Make a copy of the object (reference semantics).
PagedImage(const TiledShape &mapShape, const CoordinateSystem &coordinateInfo, const String &nameOfNewFile, TableLock::LockOption, uInt rowNumber=0)
Construct a new Image from shape and coordinate information.
PagedImage(const TiledShape &mapShape, const CoordinateSystem &coordinateInfo, const String &nameOfNewFile, const TableLock &lockOptions, uInt rowNumber=0)
virtual IPosition doNiceCursorShape(uInt maxPixels) const
Help the user pick a cursor for most efficient access.
virtual T getAt(const IPosition &where) const
These are the true implementations of the paran operator.
virtual void doPutSlice(const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
Function to replace the values in the map with soureBuffer.
virtual const Lattice< Bool > & pixelMask() const
Get access to the pixelmask used.
virtual void setCacheSizeInTiles(uInt howManyTiles)
Set the actual cache size for this Array to be be big enough for the indicated number of tiles.
PagedImage< T > & operator=(const PagedImage< T > &other)
Assignment operator (reference semantics).
virtual Bool ok() const
Check for symmetry in data members.
void applyMask(const String &maskName)
virtual Bool setUnits(const Unit &newUnits)
Function which sets the units associated with the image pixels (i.e.
virtual void setMaximumCacheSize(uInt howManyPixels)
Set the maximum (allowed) cache size as indicated.
virtual Bool hasLock(FileLocker::LockType) const
virtual Lattice< Bool > & pixelMask()
const Table & table() const
Definition PagedImage.h:400
virtual void tempClose()
Close the Image and associated files temporarily.
virtual Bool doGetSlice(Array< T > &buffer, const Slicer &theSlice)
Function which extracts an array from the map.
void restoreImageInfo(const TableRecord &rec)
PagedImage(const String &filename, const TableLock &lockOptions, MaskSpecifier=MaskSpecifier(), uInt rowNumber=0)
virtual Bool lock(FileLocker::LockType, uInt nattempts)
Handle the (un)locking.
virtual void unlock()
void makePagedImage(const TiledShape &mapShape, const CoordinateSystem &coordinateInfo, const String &nameOfNewFile, const TableLock &lockOptions, uInt rowNumber)
PagedImage< T > & operator+=(const Lattice< T > &other)
Add a lattice to this image.
void makePagedImage(const String &filename, const TableLock &lockOptions, const MaskSpecifier &, uInt rowNumber)
virtual Bool setImageInfo(const ImageInfo &info)
The ImageInfo object contains some miscellaneous information about the image, which unlike that store...
void restoreAll(const TableRecord &rec)
void attach_logtable()
This must be called in every constructor and place where the image is attached to a new image.
void restoreUnits(const TableRecord &rec)
PagedImage(const TiledShape &mapShape, const CoordinateSystem &coordinateInfo, const String &nameOfNewFile, uInt rowNumber=0)
Construct a new Image from shape and coordinate information.
virtual const LatticeRegion * getRegionPtr() const
Get a pointer the default pixelmask object used with this image.
static Table & getTable(void *imagePtr, Bool writable)
Function to return the internal Table object to the RegionHandler.
virtual LatticeIterInterface< T > * makeIter(const LatticeNavigator &navigator, Bool useRef) const
This is the implementation of the letter for the envelope Iterator class; Note: Not for public use ...
void check_conformance(const Lattice< T > &other)
virtual uInt maximumCacheSize() const
Maximum size - not necessarily all used.
virtual Bool hasPixelMask() const
Does the image object use a pixelmask?
virtual String imageType() const
Get the image type (returns name of this derived class).
virtual void flush()
Flush the data.
PagedImage(const String &filename, TableLock::LockOption, MaskSpecifier=MaskSpecifier(), uInt rowNumber=0)
Reconstruct an image from a pre-existing file with Locking.
GroupType
Define the possible group types (regions or masks).
String: the storage and methods of handling collections of characters.
Definition String.h:355
LockOption
Define the possible table locking options.
Definition TableLock.h:75
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
unsigned int uInt
Definition aipstype.h:49
RecordInterface()
The default constructor creates an empty record with a variable structure.
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
DataType imagePixelType(const String &fileName)
Determine the pixel type in the PagedImage contained in fileName.
const Bool True
Definition aipstype.h:41
NewDelAllocator< T > NewDelAllocator< T >::value
Definition Allocator.h:360