Loading...
Searching...
No Matches
MCPosition.h
Go to the documentation of this file.
//# MCPosition.h: MPosition conversion routines
//# Copyright (C) 1995,1996,1997,1998,1999,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MEASURES_MCPOSITION_H
#define MEASURES_MCPOSITION_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/ArrayFwd.h>
#include <casacore/measures/Measures/MeasBase.h>
#include <casacore/measures/Measures/MeasRef.h>
#include <casacore/measures/Measures/MCBase.h>
#include <casacore/measures/Measures/MConvertBase.h>
#include <casacore/measures/Measures/MPosition.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class MCPosition;
class String;
//# Typedefs
// <summary> MPosition conversion routines </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=Measure>Measure</linkto> class
// <li> <linkto class=MCBase>MCBase</linkto> base class
// <li> <linkto class=MConvertBase>overall conversion</linkto> class
// </prerequisite>
//
// <etymology>
// Measure, Convert and Position
// </etymology>
//
// <synopsis>
// Contains state machinery and caching for actual conversions
// </synopsis>
//
// <example>
// See <linkto class=Measure>Measure</linkto> for conversion example.
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="1996/02/21">
// <li>
// </todo>
class MCPosition : public MCBase {
public:
//# Friends
// Conversion of data
friend class MeasConvert<MPosition>;
//# Constructors
// Default constructor
MCPosition();
//# Destructor
~MCPosition();
//# Member functions
// Show the state of the conversion engine (mainly for debugging purposes)
static String showState();
private:
//# Enumerations
// The list of actual routines provided.
// <note role=warning> Each <src>AA_BB</src> in the list points to routine
// that can be used in the FromTo list in the getConvert routine.
// In addition the type to which each is converted should be in the
// ToRef array, again in the proper order. </note>
enum Routes {
ITRF_WGS84,
WGS84_ITRF,
N_Routes };
//# Typedefs
//# Operators
//# General Member Functions
//# Enumerations
//# Cached Data
Vector<Double> *DVEC1;
//# State machine data
// Transition list
static uInt ToRef_p[N_Routes][3];
// Transition matrix
static uInt FromTo_p[MPosition::N_Types][MPosition::N_Types];
// Object to ensure safe multi-threaded lazy single initialization
static std::once_flag theirInitOnceFlag;
//# Constructors
// Copy constructor (not implemented)
MCPosition(const MCPosition &other);
// Assignment (not implemented)
MCPosition &operator=(const MCPosition &other);
//# Member functions
// Create conversion function pointer
virtual void getConvert(MConvertBase &mc,
const MRBase &inref,
const MRBase &outref);
// Create help structures for Measure conversion routines
virtual void initConvert(uInt which, MConvertBase &mc);
// Delete the pointers used in the MeasConvert help structure cache
virtual void clearConvert();
// Routine to do actual conversion
virtual void doConvert(MeasValue &in,
MRBase &inref,
MRBase &outref,
const MConvertBase &mc);
// Conversion routine to cater for inheritance question
void doConvert(MVPosition &in,
MRBase &inref,
MRBase &outref,
const MConvertBase &mc);
private:
// Fill the global state. Called using theirInitOnce.
static void doFillState();
};
} //# NAMESPACE CASACORE - END
#endif
casacore::MCBase
Definition MCBase.h:116
casacore::MCPosition::doConvert
void doConvert(MVPosition &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Conversion routine to cater for inheritance question.
casacore::MCPosition::DVEC1
Vector< Double > * DVEC1
Definition MCPosition.h:118
casacore::MCPosition::doConvert
virtual void doConvert(MeasValue &in, MRBase &inref, MRBase &outref, const MConvertBase &mc)
Routine to do actual conversion.
casacore::MCPosition::MCPosition
MCPosition()
Default constructor.
casacore::MCPosition::doFillState
static void doFillState()
Fill the global state.
casacore::MCPosition::Routes
Routes
The list of actual routines provided.
Definition MCPosition.h:104
casacore::MCPosition::ITRF_WGS84
@ ITRF_WGS84
Definition MCPosition.h:105
casacore::MCPosition::N_Routes
@ N_Routes
Definition MCPosition.h:107
casacore::MCPosition::WGS84_ITRF
@ WGS84_ITRF
Definition MCPosition.h:106
casacore::MCPosition::clearConvert
virtual void clearConvert()
Delete the pointers used in the MeasConvert help structure cache.
casacore::MCPosition::MCPosition
MCPosition(const MCPosition &other)
Copy constructor (not implemented).
casacore::MCPosition::operator=
MCPosition & operator=(const MCPosition &other)
Assignment (not implemented).
casacore::MCPosition::ToRef_p
static uInt ToRef_p[N_Routes][3]
Transition list.
Definition MCPosition.h:122
casacore::MCPosition::FromTo_p
static uInt FromTo_p[MPosition::N_Types][MPosition::N_Types]
Transition matrix.
Definition MCPosition.h:124
casacore::MCPosition::~MCPosition
~MCPosition()
casacore::MCPosition::theirInitOnceFlag
static std::once_flag theirInitOnceFlag
Object to ensure safe multi-threaded lazy single initialization.
Definition MCPosition.h:126
casacore::MCPosition::getConvert
virtual void getConvert(MConvertBase &mc, const MRBase &inref, const MRBase &outref)
Create conversion function pointer.
casacore::MCPosition::initConvert
virtual void initConvert(uInt which, MConvertBase &mc)
Create help structures for Measure conversion routines.
casacore::MCPosition::showState
static String showState()
Show the state of the conversion engine (mainly for debugging purposes).
casacore::MConvertBase
Definition MConvertBase.h:144
casacore::MPosition
Definition MPosition.h:76
casacore::MPosition::N_Types
@ N_Types
Definition MPosition.h:94
casacore::MRBase
Definition MRBase.h:100
casacore::MVPosition
Definition MVPosition.h:111
casacore::MeasConvert
Definition MeasConvert.h:143
casacore::MeasValue
Definition MeasValue.h:104
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Vector
Definition Vector.h:82
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49