casacore
Loading...
Searching...
No Matches
ImageProxy.h
Go to the documentation of this file.
1// # ImageProxy.h: Proxy interface to images
2// # Copyright (C) 1997-2007
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_IMAGEPROXY_H
27#define IMAGES_IMAGEPROXY_H
28
29// # Includes
30#include <casacore/casa/aips.h>
31#include <casacore/images/Images/MaskSpecifier.h>
32#include <casacore/lattices/Lattices/LatticeBase.h>
33#include <casacore/lattices/Lattices/TiledShape.h>
34#include <casacore/casa/Containers/ValueHolder.h>
35#include <casacore/casa/Containers/Record.h>
36#include <memory>
37
38namespace casacore {
39
40// # Forward Declarations.
41class ImageInfo;
42template <typename T>
43class ImageInterface;
44class LatticeExprNode;
47
48// <synopsis>
49// ImageProxy is a proxy to an image having data type Float, Double,
50// Complex, or DComplex. Its primary purpose is to be bind the images
51// module to Python through pyrap.images. However, it can also be used
52// directly in C++.
53//
54// An ImageProxy object can be constructed for an image stored on disk in
55// Casacore, FITS, HDF5, or Miriad format. It can also be constructed given
56// a shape or an N-dim array with values.
57// Furthermore it can be constructed from a LEL expression (see class ImageExpr)
58// or a vector of images to be concatenated (see class ImageConcat).
59//
60// Many functions exist to operate on an ImageProxy object. For example:
61// <ul>
62// <li> get meta info (shape, data type, coordinates, etc.)
63// <li> save in Casacore, HDF5, or FITS format.
64// <li> regrid.
65// <li> get statistics.
66// <li> form a subimage (which is done in a virtual way).
67// </ul>
68// Functions regrid and statistics can only be used for Float images.
69// They throw an exception for images with other data types.
70// Note that using a LEL expression it is possible to (virtually) convert an
71// image with another type to a Float image.
72// </synopsis>
73
75 public:
76 // Default constructor is needed for Boost-Python.
78
79 // Construct from the concatenation of the images along the axis.
80 // The axis must be given as a Fortran-array axis.
81 // All images must be of the same data type.
82 ImageProxy(const Vector<String>& names, Int axis);
83
84 // Construct from a string that contains an image name or image expression.
85 // It is opened using ImageOpener.
86 ImageProxy(const String& name, const String& mask, const std::vector<ImageProxy>& images);
87
88 // Construct from the concatenation of the image objects along the axis.
89 // The axis must be given as a Fortran-array axis.
90 // All images must be of the same data type.
91 // # The dummy arguments are needed to let all constructors have a
92 // # different number of arguments (for Boost-Python).
93 ImageProxy(const std::vector<ImageProxy>& images, Int axis, Int dummy1 = 0, Int dummy2 = 0);
94
95 // Construct from a ValueHolder containing an Array of Float or Complex.
96 // If the name is empty it is created as a temporary image, otherwise
97 // as a PagedImage or HDF5Image.
98 // If the coordinates record is empty, default coordinates are used.
99 // A mask is created if the mask name or mask value is not empty.
100 ImageProxy(const ValueHolder& values, const ValueHolder& mask, const Record& coordinates,
101 const String& imageName = String(), Bool overwrite = True, Bool asHDF5 = False,
102 const String& maskName = String(), const IPosition& tileShape = IPosition());
103
104 // Construct from a shape.
105 // If the name is empty it is created as a temporary image, otherwise
106 // as a PagedImage or HDF5Image.
107 // If the coordinates record is empty, default coordinates are used.
108 // A mask is created if the mask name is not empty.
109 ImageProxy(const IPosition& shape, const ValueHolder& value, const Record& coordinates,
110 const String& imageName = String(), Bool overwrite = True, Bool asHDF5 = False,
111 const String& maskName = String(), const IPosition& tileShape = IPosition(),
112 Int dummy = 0);
113
114 // Construct from an existing image object.
115 ImageProxy(const std::shared_ptr<LatticeBase>&);
116
117 // Copy constructor (reference semantics).
119
120 // Assignment (reference semantics).
122
124
125 // Open the image (which can also be an expression).
126 // It throws an exception if not succeeded.
127 static LatticeBase* openImage(const String& name, const String& mask = String(),
128 const std::vector<ImageProxy>& images = std::vector<ImageProxy>());
129
130 // Open an image in the file/table with the given name.
131 // The specified mask will be applied (default is default mask).
132 // A null pointer is returned for an unknown image type.
133 // Non-Casacore image types must have been registered to be known.
134 // If not successful, try to open it as an image expression.
136 const Block<LatticeExprNode>& nodes);
137
138 // Close the image by setting all pointers to 0.
139 void close();
140
141 // Turn the ImageProxy into a LatticeExprNode.
143
144 // Is the image persistent or temporary.
146
147 // Get the name of the image.
148 String name(Bool stripPath = False) const;
149
150 // Get the shape of the image.
152
153 // Get the dimensionality of the image.
154 uInt ndim() const;
155
156 // Get the size of the image (nr of pixels).
157 uInt size() const;
158
159 // Get the data type of the image.
161
162 DataType type() const;
163
164 // Get the image type (PagedImage, HDF5Image, etc.)
166
167 // Get a chunk of data.
168 ValueHolder getData(const IPosition& blc, const IPosition& trc, const IPosition& inc);
169
170 // Get a chunk of the mask.
171 ValueHolder getMask(const IPosition& blc, const IPosition& trc, const IPosition& inc);
172
173 // Put a chunk of data.
174 void putData(const ValueHolder&, const IPosition& blc, const IPosition& inc);
175
176 // Put a chunk of the mask.
177 // The mask will be created if not present yet.
178 // That will not be done if the entire mask is True.
179 void putMask(const ValueHolder& value, const IPosition& blc, const IPosition& inc);
180
181 // Does the image have a read or write lock?
182 Bool hasLock(Bool writeLock = False);
183
184 // Try to acquire a read or write lock.
185 // nattempts=0 means wait until acquired. Otherwise every second an
186 // attempt is done.
187 void lock(Bool writeLock = False, Int nattempts = 0);
188
189 // Release the lock acquired by lock().
190 void unlock();
191
192 // Get the names of the attribute groups.
194
195 // Create a new attribute group.
196 void createAttrGroup(const String& groupName);
197
198 // Get the names of all attributes in a group.
199 Vector<String> attrNames(const String& groupName) const;
200
201 // Get the number of rows in an attribute group.
202 uInt attrNrows(const String& groupName) const;
203
204 // Get the value of an attribute in a group row.
205 ValueHolder getAttr(const String& groupName, const String& attrName, uInt rownr) const;
206
207 // Get all attributes in a group row.
208 Record getAttrRow(const String& groupName, uInt rownr) const;
209
210 // Get the unit(s) of an attribute in a group.
211 Vector<String> getAttrUnit(const String& groupName, const String& attrName) const;
212
213 // Get the measinfo of an attribute in a group.
214 Vector<String> getAttrMeas(const String& groupName, const String& attrName) const;
215
216 // Put the value, unit, and measinfo of an attribute in a group row.
217 // The attribute or row is added if new.
218 void putAttr(const String& groupName, const String& attrName, uInt rownr,
219 const ValueHolder& value, const Vector<String>& units,
220 const Vector<String>& measInfo);
221
222 // Form a new (virtual) image being a subset of the image.
223 // It uses preserveAxesOrder=False.
224 ImageProxy subImage(const IPosition& blc, const IPosition& trc, const IPosition& inc,
225 Bool dropDegenerate = True);
226 // Same with a new function name for backward compatibility with old pyrap.
227 ImageProxy subImage2(const IPosition& blc, const IPosition& trc, const IPosition& inc,
228 Bool dropDegenerate, Bool preserveAxesOrder);
229
230 // Get the brightness unit.
231 String unit() const;
232
233 // Get the coordinate system.
235
237
238 // Convert a pixel coordinate to world coordinate.
239 // if <src>reverseAxes=True</src> the input and output vector will be
240 // reversed (as needed for pyrap).
241 Vector<Double> toWorld(const Vector<Double>& pixel, Bool reverseAxes);
242
243 // Convert a world coordinate to pixel coordinate.
244 // if <src>reverseAxes=True</src> the input and output vector will be
245 // reversed (as needed for pyrap).
246 Vector<Double> toPixel(const Vector<Double>& world, Bool reverseAxes);
247
248 // Get the image info.
250
252
253 // Get the miscellaneous info.
255
256 // Get the history.
258
259 // Write the image in FITS format.
260 // See class ImageFITSConverter for a description of the arguments.
261 // Currently only a float image can be written to FITS.
262 void toFits(const String& fitsfile, Bool overwrite = True, Bool velocity = True,
263 Bool optical = True, Int bitpix = -32, Double minpix = 1, Double maxpix = -1) const;
264
265 // Write the image to an image file with the given name.
266 // An exception is thrown if the name is the name of an already open image.
267 void saveAs(const String& fileName, Bool overwrite = True, Bool hdf5 = False,
268 Bool copyMask = True, const String& newMaskName = String(),
269 const IPosition& newTileShape = IPosition()) const;
270
271 // Return the statistics for the given axes.
272 // E.g., if axes 0,1 is given in a 3-dim image, the statistics are
273 // calculated for each plane along the 3rd axis.
274 // MinMaxValues can be given to include or exclude (4th argument) pixels
275 // with values in the given range. If only one value is given, min=-abs(val)
276 // and max=abs(val).
277 // Robust statistics (Median, MedAbsDevMed, and Quartile) can be returned
278 // too.
279 Record statistics(const Vector<Int>& axes, const String& mask, const ValueHolder& minMaxValues,
280 Bool exclude = False, Bool robust = False) const;
281
282 // Regrid the image on the given axes to the given coordinate system.
283 // The output is stored in the given file; it no file name is given a
284 // temporary image is made.
285 // If the output shape is empty, the old shape is used.
286 // <src>replicate=True</src> means replication rather than regridding.
287 ImageProxy regrid(const Vector<Int>& axes = Vector<Int>(), const String& outfile = String(),
288 Bool overwriteOutFile = True, const IPosition& outShape = IPosition(),
289 const Record& coordSys = Record(), const String& method = "linear",
290 Int decimate = 10, Bool replicate = False, Bool doRefChange = True,
291 Bool forceRegrid = False);
292
293 // Check and adjust blc, trc, or inc using the shape.
294 // <group>
295 static IPosition adjustBlc(const IPosition& blc, const IPosition& shp);
296 static IPosition adjustTrc(const IPosition& trc, const IPosition& shp);
297 static IPosition adjustInc(const IPosition& inc, const IPosition& shp);
298 // </group>
299
300 /*
301
302 ImageProxy rotate(const String& outfile,
303 const IPosition& shape,
304 const Quantity& pa, Record& region,
305 const String& mask,
306 const String& method = "cubic",
307 Int decimate = 0,
308 Bool replicate = False,
309 Bool dropdeg = False,
310 Bool overwrite = False);
311
312
313 Bool setbrightnessunit (const String& unit);
314
315 Bool setcoordsys (const Record& csys);
316
317 Bool sethistory (const String& origin, const Vector<String>& history);
318
319 Bool setmiscinfo (const Record& info);
320
321 ImageProxy subimage(const String& outfile, Record& region,
322 const String& mask,
323 Bool dropdeg = False,
324 Bool overwrite = False,
325 Bool list = True);
326
327 Vector<Double> topixel(Record& value);
328
329 */
330
331 LatticeBase* getLattice() const { return itsLattice.operator->(); }
332
333 private:
334 // Form an ImageProxy object from an existing image object.
336
337 // Throw an exception if the object is null.
338 void checkNull() const;
339
340 // Make an image from an array or shape.
341 template <typename T>
343 const Record& coordinates, const String& fileName, Bool asHDF5,
344 const String& maskName, const IPosition& tileShape);
345
346 // Form a concatenated image.
347 // <group>
348 void concatImages(const std::vector<ImageProxy>& images, Int axis);
349 void concatImagesFloat(const std::vector<ImageProxy>& images, Int axis);
350 void concatImagesDouble(const std::vector<ImageProxy>& images, Int axis);
351 void concatImagesComplex(const std::vector<ImageProxy>& images, Int axis);
352 void concatImagesDComplex(const std::vector<ImageProxy>& images, Int axis);
353 // </group>
354
355 // Setup the pointers for the various image data types.
356 void setup();
357
358 // Setup the pointers for the various image data types.
359 // It takes over the lattice pointer.
360 void setup(LatticeBase* lattice);
361
362 // Centre all axes except the Stokes one.
363 void centreRefPix(CoordinateSystem& cSys, const IPosition& shape) const;
364
365 // Put the mask and create it if needed.
366 template <typename T>
367 void doPutMask(ImageInterface<T>& image, const ValueHolder& value, const IPosition& blc,
368 const IPosition& inc);
369
370 // Copy the image to an image (PagedImage or HDF5Image) with the given name.
371 // A new tile shape can be given.
372 // If the image is masked, the mask can be copied as well.
373 template <typename T>
374 void saveImage(const String& fileName, Bool hdf5, Bool copyMask, const String& newMaskName,
375 const IPosition& newTileShape, const ImageInterface<T>& image) const;
376
377 // Form a tiled shape from the current shape and a possible new tile shape.
378 TiledShape makeTiledShape(const IPosition& newTileShape, const IPosition& shape,
379 const IPosition& oldTileShape = IPosition()) const;
380
381 // Calculate the statistics.
382 template <typename T>
384 const ValueHolder& minMaxValues, Bool exclude, Bool robust) const;
385
386 // Do the actual regridding.
387 template <typename T>
389 const String& outfile, const IPosition& shape, const Record& coordSys,
390 const String& method, Int decimate, Bool replicate, Bool doRefChange,
391 Bool force);
392
393 // Make a coordinate system from the Record.
394 // The cylindrical fix is applied if needed.
395 CoordinateSystem makeCoordinateSystem(const Record& coordinates, const IPosition& shape) const;
396
397 // # Data members.
398 // # itsLattice is the real data; the pointers are for type convenience only.
399 std::shared_ptr<LatticeBase> itsLattice;
400 ImageInterface<Float>* itsImageFloat; // # reference, so no delete
401 ImageInterface<Double>* itsImageDouble; // # reference, so no delete
402 ImageInterface<Complex>* itsImageComplex; // # reference, so no delete
403 ImageInterface<DComplex>* itsImageDComplex; // # reference, so no delete
404 const CoordinateSystem* itsCoordSys; // # reference, so no delete
405 ImageAttrHandler* itsAttrHandler; // # reference, so no delete
406};
407
408} // end namespace casacore
409
410#endif
void makeImage(const Array< T > &array, const Array< Bool > &mask, const IPosition &shape, const Record &coordinates, const String &fileName, Bool asHDF5, const String &maskName, const IPosition &tileShape)
Make an image from an array or shape.
const CoordinateSystem * itsCoordSys
Definition ImageProxy.h:404
static LatticeBase * openImage(const String &name, const String &mask=String(), const std::vector< ImageProxy > &images=std::vector< ImageProxy >())
Open the image (which can also be an expression).
Record coordSys() const
Get the coordinate system.
CoordinateSystem makeCoordinateSystem(const Record &coordinates, const IPosition &shape) const
Make a coordinate system from the Record.
ImageProxy & operator=(const ImageProxy &)
Assignment (reference semantics).
ImageProxy(const String &name, const String &mask, const std::vector< ImageProxy > &images)
Construct from a string that contains an image name or image expression.
void putAttr(const String &groupName, const String &attrName, uInt rownr, const ValueHolder &value, const Vector< String > &units, const Vector< String > &measInfo)
Put the value, unit, and measinfo of an attribute in a group row.
ImageProxy(const ValueHolder &values, const ValueHolder &mask, const Record &coordinates, const String &imageName=String(), Bool overwrite=True, Bool asHDF5=False, const String &maskName=String(), const IPosition &tileShape=IPosition())
Construct from a ValueHolder containing an Array of Float or Complex.
void saveAs(const String &fileName, Bool overwrite=True, Bool hdf5=False, Bool copyMask=True, const String &newMaskName=String(), const IPosition &newTileShape=IPosition()) const
Write the image to an image file with the given name.
void putData(const ValueHolder &, const IPosition &blc, const IPosition &inc)
Put a chunk of data.
ImageInterface< DComplex > * itsImageDComplex
Definition ImageProxy.h:403
const CoordinateSystem & coordSysObject() const
uInt size() const
Get the size of the image (nr of pixels).
static LatticeBase * openImageOrExpr(const String &str, const MaskSpecifier &, const Block< LatticeExprNode > &nodes)
Open an image in the file/table with the given name.
Record statistics(const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude=False, Bool robust=False) const
Return the statistics for the given axes.
void concatImagesFloat(const std::vector< ImageProxy > &images, Int axis)
ImageProxy()
Default constructor is needed for Boost-Python.
ImageProxy(LatticeBase *)
Form an ImageProxy object from an existing image object.
uInt attrNrows(const String &groupName) const
Get the number of rows in an attribute group.
void concatImagesComplex(const std::vector< ImageProxy > &images, Int axis)
ImageProxy subImage2(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate, Bool preserveAxesOrder)
Same with a new function name for backward compatibility with old pyrap.
void concatImagesDComplex(const std::vector< ImageProxy > &images, Int axis)
ValueHolder getAttr(const String &groupName, const String &attrName, uInt rownr) const
Get the value of an attribute in a group row.
void lock(Bool writeLock=False, Int nattempts=0)
Try to acquire a read or write lock.
Record miscInfo() const
Get the miscellaneous info.
void centreRefPix(CoordinateSystem &cSys, const IPosition &shape) const
Centre all axes except the Stokes one.
ValueHolder getMask(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of the mask.
ImageInterface< Complex > * itsImageComplex
Definition ImageProxy.h:402
void putMask(const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put a chunk of the mask.
Bool hasLock(Bool writeLock=False)
Does the image have a read or write lock?
DataType type() const
LatticeExprNode makeNode() const
Turn the ImageProxy into a LatticeExprNode.
IPosition shape() const
Get the shape of the image.
ImageInterface< Float > * itsImageFloat
Definition ImageProxy.h:400
Vector< String > attrNames(const String &groupName) const
Get the names of all attributes in a group.
Record imageInfo() const
Get the image info.
ImageProxy(const IPosition &shape, const ValueHolder &value, const Record &coordinates, const String &imageName=String(), Bool overwrite=True, Bool asHDF5=False, const String &maskName=String(), const IPosition &tileShape=IPosition(), Int dummy=0)
Construct from a shape.
void unlock()
Release the lock acquired by lock().
Bool isPersistent() const
Is the image persistent or temporary.
ImageProxy(const ImageProxy &)
Copy constructor (reference semantics).
void concatImagesDouble(const std::vector< ImageProxy > &images, Int axis)
ImageAttrHandler * itsAttrHandler
Definition ImageProxy.h:405
Vector< String > getAttrUnit(const String &groupName, const String &attrName) const
Get the unit(s) of an attribute in a group.
Vector< Double > toWorld(const Vector< Double > &pixel, Bool reverseAxes)
Convert a pixel coordinate to world coordinate.
void concatImages(const std::vector< ImageProxy > &images, Int axis)
Form a concatenated image.
TiledShape makeTiledShape(const IPosition &newTileShape, const IPosition &shape, const IPosition &oldTileShape=IPosition()) const
Form a tiled shape from the current shape and a possible new tile shape.
Vector< Double > toPixel(const Vector< Double > &world, Bool reverseAxes)
Convert a world coordinate to pixel coordinate.
ImageProxy(const std::shared_ptr< LatticeBase > &)
Construct from an existing image object.
const ImageInfo & imageInfoObject() const
void saveImage(const String &fileName, Bool hdf5, Bool copyMask, const String &newMaskName, const IPosition &newTileShape, const ImageInterface< T > &image) const
Copy the image to an image (PagedImage or HDF5Image) with the given name.
ImageProxy regrid(const Vector< Int > &axes=Vector< Int >(), const String &outfile=String(), Bool overwriteOutFile=True, const IPosition &outShape=IPosition(), const Record &coordSys=Record(), const String &method="linear", Int decimate=10, Bool replicate=False, Bool doRefChange=True, Bool forceRegrid=False)
Regrid the image on the given axes to the given coordinate system.
ImageProxy subImage(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate=True)
Form a new (virtual) image being a subset of the image.
static IPosition adjustBlc(const IPosition &blc, const IPosition &shp)
Check and adjust blc, trc, or inc using the shape.
String imageType() const
Get the image type (PagedImage, HDF5Image, etc.).
Vector< String > attrGroupNames() const
Get the names of the attribute groups.
Vector< String > history() const
Get the history.
ImageInterface< Double > * itsImageDouble
Definition ImageProxy.h:401
uInt ndim() const
Get the dimensionality of the image.
ImageProxy(const std::vector< ImageProxy > &images, Int axis, Int dummy1=0, Int dummy2=0)
Construct from the concatenation of the image objects along the axis.
String unit() const
Get the brightness unit.
void checkNull() const
Throw an exception if the object is null.
Vector< String > getAttrMeas(const String &groupName, const String &attrName) const
Get the measinfo of an attribute in a group.
ImageProxy(const Vector< String > &names, Int axis)
Construct from the concatenation of the images along the axis.
String dataType() const
Get the data type of the image.
String name(Bool stripPath=False) const
Get the name of the image.
static IPosition adjustTrc(const IPosition &trc, const IPosition &shp)
void setup()
Setup the pointers for the various image data types.
LatticeBase * getLattice() const
Definition ImageProxy.h:331
void setup(LatticeBase *lattice)
Setup the pointers for the various image data types.
void createAttrGroup(const String &groupName)
Create a new attribute group.
ValueHolder getData(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of data.
static IPosition adjustInc(const IPosition &inc, const IPosition &shp)
void toFits(const String &fitsfile, Bool overwrite=True, Bool velocity=True, Bool optical=True, Int bitpix=-32, Double minpix=1, Double maxpix=-1) const
Write the image in FITS format.
void close()
Close the image by setting all pointers to 0.
void doPutMask(ImageInterface< T > &image, const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put the mask and create it if needed.
std::shared_ptr< LatticeBase > itsLattice
Definition ImageProxy.h:399
ImageProxy doRegrid(const ImageInterface< T > &image, const Vector< Int > &axes, const String &outfile, const IPosition &shape, const Record &coordSys, const String &method, Int decimate, Bool replicate, Bool doRefChange, Bool force)
Do the actual regridding.
Record makeStatistics(const ImageInterface< T > &image, const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude, Bool robust) const
Calculate the statistics.
Record getAttrRow(const String &groupName, uInt rownr) const
Get all attributes in a group row.
String: the storage and methods of handling collections of characters.
Definition String.h:355
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
T * array
The actual storage.
Definition Block.h:689
unsigned int uInt
Definition aipstype.h:49
LatticeExprNode mask(const LatticeExprNode &expr)
This function returns the mask of the given expression.
String replicate(char c, String::size_type n)
int Int
Definition aipstype.h:48
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
const Bool True
Definition aipstype.h:41
NewDelAllocator< T > NewDelAllocator< T >::value
Definition Allocator.h:360
double Double
Definition aipstype.h:53