Loading...
Searching...
No Matches
casacore::MeasureHolder Class Reference
measures package (libcasa_measures) » Measures_module

More...

`#include <MeasureHolder.h>`

## Public Member Functions

| MeasureHolder ()
| Creates an empty holder.
| MeasureHolder (const Measure &in)
| Create from a Measure (copy made).
| MeasureHolder (const MeasureHolder &other)
| Copy a holder (copy semantics).
| ~MeasureHolder ()
MeasureHolder & | operator= (const MeasureHolder &other)
| Assignment (copy semantics).
Bool | isEmpty () const
| Check the the MeasureHolder holds the specified Measure type.
Bool | isMeasure () const
Bool | isMDirection () const
Bool | isMDoppler () const
Bool | isMEpoch () const
Bool | isMFrequency () const
Bool | isMPosition () const
Bool | isMRadialVelocity () const
Bool | isMBaseline () const
Bool | isMuvw () const
Bool | isMEarthMagnetic () const
const Measure & | asMeasure () const
| Get a specific Measure from the holder (with lifetime as long as holder exists).
const MDirection & | asMDirection () const
const MDoppler & | asMDoppler () const
const MEpoch & | asMEpoch () const
const MFrequency & | asMFrequency () const
const MPosition & | asMPosition () const
const MRadialVelocity & | asMRadialVelocity () const
const MBaseline & | asMBaseline () const
const Muvw & | asMuvw () const
const MEarthMagnetic & | asMEarthMagnetic () const
virtual Bool | fromRecord (String &error, const RecordInterface &in)
| Create a Measure from a record.
virtual Bool | fromString (String &error, const String &in)
| Initialise the class from a String representation.
virtual Bool | toRecord (String &error, RecordInterface &out) const
| Create a record from a Measure.
virtual void | toRecord (RecordInterface &outRecord) const
| This version throws an exception if the conversion cannot occur.
Bool | toType (String &error, RecordInterface &out) const
| Create a default Measure or a record with only a type from a Measure.
Bool | fromType (String &error, const RecordInterface &in)
virtual const String & | ident () const
| Get identification of record.
Bool | writeMV () const
| Do we write MeasValues to record?
void | makeMV (uInt n)
| Make a block of n MeasValues.
uInt | nelements () const
| Get number of MeasValue pointers in block.
Bool | setMV (uInt pos, const MeasValue &in)
| Set a measvalue at position pos (False if illegal pos).
MeasValue * | getMV (uInt pos) const
| Get a pointer to a MeasValue (or 0).
Public Member Functions inherited from casacore::RecordTransformable
virtual | ~RecordTransformable ()
| The destructor must be virtual so that the destructor of derived classes is actually used.

## Private Member Functions

Bool | putType (String &error, RecordInterface &out) const
| Aid for to/from Record, String and Type.
Bool | getType (String &error, const RecordInterface &in)
Bool | getType (String &error, const String &in)
void | createMV (uInt n)
| Make a MeasValue block of pointers of length n.

## Private Attributes

std::unique_ptr< Measure > | hold_p
| Pointer to a Measure.
Block< MeasValue * > | mvhold_p
| Block of pointers to measure values to make a faster interface.
Bool | convertmv_p
| Should the mvhold_p be converted into record?

## Detailed Description

A holder for Measures to enable record conversions

### Intended use:

Public interface

### Review Status

Reviewed By:
  UNKNOWN
Date Reviewed:
  before2004/08/25
Test programs:
  tMeasureHolder

### Prerequisite

- RecordInterface class
- Measure class

### Etymology

A Holder of general Measures

### Synopsis

This class can be used to handle heterogeneous collections of Measures, e.g. as a Vector<MeasureHolder>. With the aid of the toRecord() and fromRecord() functions it can be used to convert a Measure object into or from a record. A MeasureHolder is created from a Measure, or can be empty.

Checks on the contents can be made with functions like isMDirection and the contents can be obtained with functions like asMDirection. It is an error to try and retrieve a measure of the wrong type and doing so will generate an exception (AipsError).

The MeasureHolder can, in addition to the Measure it is holding, also hold a block of MeasValues. This is especially useful for intertask communication (e.g. with Glish), for reasons of speed. In general the additional values will be created when the record used to create a Holder contains a Quantity<Vector> rather than a quantity in the m0, m1 and/or m2 fields. The getMV() method can be used to access the nelements() additional information. They can be (re-)set with the setMV() method (after a possible creation of the extra block if not already there, or of the wrong length, with makeMV(). If any value is set they will be used in creating records, with the first value always overwriting the actual Measure value.

### Example

TableRecord rec;
MDirection dir(MVDirection(Quantity(12.5, 'deg'), Quantity(-2, 'deg')),
MDirection::J2000);
String error; // error message
if (!MeasureHolder(dir).toRecord(error, rec)) {
cout << error << endl;
}
Record grec; // a Record
if (!MeasureHolder(dir).toRecord(error, grec)) { // make record
cout << error << endl;
}
// Note that for GlishRecords use can be made of the
// GlishRecord::to/fromrecord() methods.
casacore::MDirection
Definition MDirection.h:171
casacore::MDirection::J2000
@ J2000
Definition MDirection.h:186
casacore::MVDirection
Definition MVDirection.h:105
casacore::MeasureHolder::toRecord
virtual Bool toRecord(String &error, RecordInterface &out) const
Create a record from a Measure.
casacore::MeasureHolder::MeasureHolder
MeasureHolder()
Creates an empty holder.
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::TableRecord
Definition TableRecord.h:183
casacore::Record
Record()
casacore::Quantity
Quantum< Double > Quantity
Definition Quantum.h:39

### Motivation

To make general conversions between Measures and records, without knowing the actual Measure being converted.

Definition at line 117 of file MeasureHolder.h.

## Constructor & Destructor Documentation

## MeasureHolder() [1/3]

casacore::MeasureHolder::MeasureHolder | ( |  | ) |

Creates an empty holder.

Referenced by MeasureHolder(), and operator=().

## MeasureHolder() [2/3]

casacore::MeasureHolder::MeasureHolder | ( | const Measure & | in | ) |

Create from a Measure (copy made).

## MeasureHolder() [3/3]

casacore::MeasureHolder::MeasureHolder | ( | const MeasureHolder & | other | ) |

Copy a holder (copy semantics).

References MeasureHolder().

## ~MeasureHolder()

casacore::MeasureHolder::~MeasureHolder | ( |  | ) |

## Member Function Documentation

## asMBaseline()

const MBaseline & casacore::MeasureHolder::asMBaseline | ( |  | ) | const

## asMDirection()

const MDirection & casacore::MeasureHolder::asMDirection | ( |  | ) | const

## asMDoppler()

const MDoppler & casacore::MeasureHolder::asMDoppler | ( |  | ) | const

## asMEarthMagnetic()

const MEarthMagnetic & casacore::MeasureHolder::asMEarthMagnetic | ( |  | ) | const

## asMeasure()

const Measure & casacore::MeasureHolder::asMeasure | ( |  | ) | const

Get a specific Measure from the holder (with lifetime as long as holder exists).

### Thrown Exceptions

- AipsError if holder empty
- AipsError if holder contains wrong Measure

## asMEpoch()

const MEpoch & casacore::MeasureHolder::asMEpoch | ( |  | ) | const

## asMFrequency()

const MFrequency & casacore::MeasureHolder::asMFrequency | ( |  | ) | const

## asMPosition()

const MPosition & casacore::MeasureHolder::asMPosition | ( |  | ) | const

## asMRadialVelocity()

const MRadialVelocity & casacore::MeasureHolder::asMRadialVelocity | ( |  | ) | const

## asMuvw()

const Muvw & casacore::MeasureHolder::asMuvw | ( |  | ) | const

## createMV()

void casacore::MeasureHolder::createMV | ( | uInt | n | ) |

private

Make a MeasValue block of pointers of length n.

Referenced by makeMV().

## fromRecord()

virtual Bool casacore::MeasureHolder::fromRecord | ( | String & | error,
|  | const RecordInterface & | in )

virtual

Create a Measure from a record.

An error message is generated, and False returned if an invalid record is given. A valid record will return True. A valid record contains the following fields (any additional fields are ignored):

- type = TpString: type of Measure (direction, epoch, etc; case insensitive)
- refer = TpString: reference type of Measure (case insensitive; enough characters to be unique (e.g. J20, j200, utc, b1950, J2000); unknown reference type will log an error message and translate into the default type for the Measure.
- m0, m1,... = TpRecord(Quantity): one or more Quantities giving the value(s) for this Measure (e.g. longitude and latitude for a direction). Each quantity can either be a scalar quantity or a Quantum<Vector<Double> >.
- offset = TpRecord(Measure)–optional: an optional offset as a Measure of the same type as the main Measure (e.g. an MEpoch for an MEpoch)

A Measure can be created from a string. In that case the string will only indicate the type of measure (like direction), and will create a default measure of that given type. In essence identical to the fromType() method. Error messages are postfixed to error.

Implements casacore::RecordTransformable.

References casacore::RecordInterface().

## fromString()

virtual Bool casacore::MeasureHolder::fromString | ( | String & | error,
|  | const String & | inString )

virtual

Initialise the class from a String representation.

A string cannot contain enough information for many objects. Hence the default implementation of this class returns False, indicating that the class could not be initialised and an error message is appended to the supplied string. If the class can be initialised from a string then this function should be overridden.

Reimplemented from casacore::RecordTransformable.

## fromType()

Bool casacore::MeasureHolder::fromType | ( | String & | error,
|  | const RecordInterface & | in )

References casacore::RecordInterface().

## getMV()

MeasValue * casacore::MeasureHolder::getMV | ( | uInt | pos | ) | const

Get a pointer to a MeasValue (or 0).

## getType() [1/2]

Bool casacore::MeasureHolder::getType | ( | String & | error,
|  | const RecordInterface & | in )

private

References casacore::RecordInterface().

## getType() [2/2]

Bool casacore::MeasureHolder::getType | ( | String & | error,
|  | const String & | in )

private

## ident()

virtual const String & casacore::MeasureHolder::ident | ( |  | ) | const

virtual

Get identification of record.

Reimplemented from casacore::RecordTransformable.

## isEmpty()

Bool casacore::MeasureHolder::isEmpty | ( |  | ) | const

Check the the MeasureHolder holds the specified Measure type.

Return True if if does and False otherwise.

## isMBaseline()

Bool casacore::MeasureHolder::isMBaseline | ( |  | ) | const

## isMDirection()

Bool casacore::MeasureHolder::isMDirection | ( |  | ) | const

## isMDoppler()

Bool casacore::MeasureHolder::isMDoppler | ( |  | ) | const

## isMEarthMagnetic()

Bool casacore::MeasureHolder::isMEarthMagnetic | ( |  | ) | const

## isMeasure()

Bool casacore::MeasureHolder::isMeasure | ( |  | ) | const

## isMEpoch()

Bool casacore::MeasureHolder::isMEpoch | ( |  | ) | const

## isMFrequency()

Bool casacore::MeasureHolder::isMFrequency | ( |  | ) | const

## isMPosition()

Bool casacore::MeasureHolder::isMPosition | ( |  | ) | const

## isMRadialVelocity()

Bool casacore::MeasureHolder::isMRadialVelocity | ( |  | ) | const

## isMuvw()

Bool casacore::MeasureHolder::isMuvw | ( |  | ) | const

## makeMV()

void casacore::MeasureHolder::makeMV | ( | uInt | n | ) |

inline

Make a block of n MeasValues.

Definition at line 225 of file MeasureHolder.h.

References createMV().

## nelements()

uInt casacore::MeasureHolder::nelements | ( |  | ) | const

inline

Get number of MeasValue pointers in block.

Definition at line 227 of file MeasureHolder.h.

References mvhold_p.

## operator=()

MeasureHolder & casacore::MeasureHolder::operator= | ( | const MeasureHolder & | other | ) |

Assignment (copy semantics).

References MeasureHolder().

## putType()

Bool casacore::MeasureHolder::putType | ( | String & | error,
|  | RecordInterface & | out ) const

private

Aid for to/from Record, String and Type.

References casacore::RecordInterface().

## setMV()

Bool casacore::MeasureHolder::setMV | ( | uInt | pos,
|  | const MeasValue & | in )

Set a measvalue at position pos (False if illegal pos).

## toRecord() [1/2]

virtual void casacore::MeasureHolder::toRecord | ( | RecordInterface & | outRecord | ) | const

virtual

This version throws an exception if the conversion cannot occur.

It is meant for more allow more compact calling code for callers that are content with just letting the exception proceed up the call stack so they do not have to check a return status. This is, among other things, what exceptions are for after all.

References casacore::RecordInterface().

## toRecord() [2/2]

virtual Bool casacore::MeasureHolder::toRecord | ( | String & | error,
|  | RecordInterface & | out ) const

virtual

Create a record from a Measure.

The return will be False and an error message generated only if the MeasureHolder does not contain a Measure. Error messages are postfixed to error.

Implements casacore::RecordTransformable.

References casacore::RecordInterface().

## toType()

Bool casacore::MeasureHolder::toType | ( | String & | error,
|  | RecordInterface & | out ) const

Create a default Measure or a record with only a type from a Measure.

References casacore::RecordInterface().

## writeMV()

Bool casacore::MeasureHolder::writeMV | ( |  | ) | const

inline

Do we write MeasValues to record?

Definition at line 223 of file MeasureHolder.h.

References convertmv_p.

## Member Data Documentation

## convertmv_p

Bool casacore::MeasureHolder::convertmv_p

private

Should the mvhold_p be converted into record?

Definition at line 241 of file MeasureHolder.h.

Referenced by writeMV().

## hold_p

std::unique_ptr<Measure> casacore::MeasureHolder::hold_p

private

Pointer to a Measure.

Definition at line 237 of file MeasureHolder.h.

## mvhold_p

Block<MeasValue *> casacore::MeasureHolder::mvhold_p

private

Block of pointers to measure values to make a faster interface.

Definition at line 239 of file MeasureHolder.h.

Referenced by nelements().

The documentation for this class was generated from the following file:

- measures/Measures/MeasureHolder.h