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