Loading...
Searching...
No Matches
FunctionOrder.h
Go to the documentation of this file.
//# FunctionOrder.h: Container of function description details
//# Copyright (C) 2002,2003
//# 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 SCIMATH_FUNCTIONORDER_H
#define SCIMATH_FUNCTIONORDER_H
//# Include files
#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/Vector.h>
#include <casacore/casa/Containers/Block.h>
#include <casacore/casa/Utilities/RecordTransformable.h>
#include <casacore/scimath/Functionals/Function.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/casa/iosfwd.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward declarations
class RecordInterface;
// <summary> Container of function description details
// </summary>
//
// <use visibility=export>
//
// <reviewed reviewer="UNKNOWN" date="before2004/08/25"tFunctionOrder"
// demos="">
// </reviewed>
//
// <synopsis>
// <src>FunctionOrder</src> is used to provide an interface to an entity which
// has special fixed parameters (like dimension of Gaussian; oder of
// Polynomial).
// This is useful, for example, in implementinggeneric function factories.
//
// </synopsis>
//
// <example>
// See the <linkto class=FunctionHolder>FunctionHolder</linkto>
// class for a usage interface.
// </example>
//
// <motivation>
// Generically manipulatable parameters are important for Glish interface
// </motivation>
//
// <templating arg=T>
// <li> <src>T</src> must have a default constructor, assignment operator,
// and copy constructor (for the Vector interface).
// <li> Complex/DComplex or Float/Double supported
// </templating>
//
// <todo asof="2002/05/28">
// <li> Nothing I know of
// </todo>
template<class T> class FunctionOrder : public RecordTransformable {
public:
//# Constructors
// Construct a default FunctionOrder with 0 parameters
FunctionOrder();
// Copy constructor (deep copy)
FunctionOrder(const FunctionOrder<T> &other);
// Destructor
virtual ~FunctionOrder();
//# Operators
// Copy assignment (deep copy)
FunctionOrder &operator=(const FunctionOrder<T> &other);
//# Member functions
// Get and set the various parameters (no check for index range).
// Automatic extension for write.
// <group>
Int &getInt(const uInt n);
const Int &getInt(const uInt n) const;
T &getPar(const uInt n);
const T &getPar(const uInt n) const;
String &getString();
const String &getString() const;
T &getScale(const uInt n);
const T &getScale(const uInt n) const;
T &getCenter(const uInt n);
const T &getCenter(const uInt n) const;
T &getWidth(const uInt n);
const T &getWidth(const uInt n) const;
const Function<T> &getFunction(const uInt n) const;
void setFunction(const uInt n, Function<T> &other);
// </group>
// Create a FunctionOrder from a record
// Error messages are postfixed to error.
// <group>
virtual Bool fromRecord(String &error, const RecordInterface &in);
virtual Bool fromString(String &error, const String &in);
// </group>
// Create a record from a FunctionOrder.
// Error messages are postfixed to error.
virtual Bool toRecord(String &error, RecordInterface &out) const;
// Get identification of record
virtual const String &ident() const;
// Output the parameters
ostream &print(ostream &os) const;
private:
//# Data
// All data vectors can be empty
// <group>
// Integer details (order etc)
Vector<Int> int_p;
// Double parameters
Vector<T> double_p;
// String parameters
String string_p;
// List of functions (say for Combi and Compound)
Block<Function<T> *> function_p;
// Scale of y (length 1)
Vector<T> scale_p;
// Centers of x (length ndim)
Vector<T> center_p;
// Width of x (ndim)
Vector<T> width_p;
// </group>
};
//# Global functions
// <summary> Global functions </summary>
// <group name=Output>
// Output declaration
template<class T>
ostream &operator<<(ostream &os, const FunctionOrder<T> &par);
// </group>
//# Inlines
template<class T>
inline ostream &operator<<(ostream &os, const FunctionOrder<T> &par) {
return par.print(os); }
} //# NAMESPACE CASACORE - END
#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/scimath/Functionals/FunctionOrder.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif
casacore::Block
Definition Block.h:140
casacore::FunctionOrder
Definition FunctionOrder.h:79
casacore::FunctionOrder::double_p
Vector< T > double_p
Double parameters.
Definition FunctionOrder.h:135
casacore::FunctionOrder::center_p
Vector< T > center_p
Centers of x (length ndim).
Definition FunctionOrder.h:143
casacore::FunctionOrder::fromRecord
virtual Bool fromRecord(String &error, const RecordInterface &in)
Create a FunctionOrder from a record Error messages are postfixed to error.
casacore::FunctionOrder::FunctionOrder
FunctionOrder(const FunctionOrder< T > &other)
Copy constructor (deep copy).
casacore::FunctionOrder::~FunctionOrder
virtual ~FunctionOrder()
Destructor.
casacore::FunctionOrder::getInt
const Int & getInt(const uInt n) const
casacore::FunctionOrder::getInt
Int & getInt(const uInt n)
Get and set the various parameters (no check for index range).
casacore::FunctionOrder::function_p
Block< Function< T > * > function_p
List of functions (say for Combi and Compound).
Definition FunctionOrder.h:139
casacore::FunctionOrder::getFunction
const Function< T > & getFunction(const uInt n) const
casacore::FunctionOrder::getCenter
T & getCenter(const uInt n)
casacore::FunctionOrder::getString
const String & getString() const
casacore::FunctionOrder::getWidth
T & getWidth(const uInt n)
casacore::FunctionOrder::scale_p
Vector< T > scale_p
Scale of y (length 1).
Definition FunctionOrder.h:141
casacore::FunctionOrder::getWidth
const T & getWidth(const uInt n) const
casacore::FunctionOrder::int_p
Vector< Int > int_p
All data vectors can be empty.
Definition FunctionOrder.h:133
casacore::FunctionOrder::setFunction
void setFunction(const uInt n, Function< T > &other)
casacore::FunctionOrder::getPar
const T & getPar(const uInt n) const
casacore::FunctionOrder::toRecord
virtual Bool toRecord(String &error, RecordInterface &out) const
Create a record from a FunctionOrder.
casacore::FunctionOrder::getScale
const T & getScale(const uInt n) const
casacore::FunctionOrder::print
ostream & print(ostream &os) const
Output the parameters.
casacore::FunctionOrder::fromString
virtual Bool fromString(String &error, const String &in)
Initialise the class from a String representation.
casacore::FunctionOrder::getString
String & getString()
casacore::FunctionOrder::getPar
T & getPar(const uInt n)
casacore::FunctionOrder::getScale
T & getScale(const uInt n)
casacore::FunctionOrder::width_p
Vector< T > width_p
Width of x (ndim).
Definition FunctionOrder.h:145
casacore::FunctionOrder::string_p
String string_p
String parameters.
Definition FunctionOrder.h:137
casacore::FunctionOrder::ident
virtual const String & ident() const
Get identification of record.
casacore::FunctionOrder::operator=
FunctionOrder & operator=(const FunctionOrder< T > &other)
Copy assignment (deep copy).
casacore::FunctionOrder::FunctionOrder
FunctionOrder()
Construct a default FunctionOrder with 0 parameters.
casacore::FunctionOrder::getCenter
const T & getCenter(const uInt n) const
casacore::Function
Definition Function.h:200
casacore::RecordTransformable
Definition RecordTransformable.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::operator<<
ostream & operator<<(ostream &os, const IComplex &)
Show on ostream.
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::RecordInterface
RecordInterface()
The default constructor creates an empty record with a variable structure.
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::FunctionOrder_global_functions_Output
Global functions .
Definition FunctionOrder.h:154
casacore::FunctionOrder_global_functions_Output::operator<<
ostream & operator<<(ostream &os, const FunctionOrder< T > &par)
Output declaration.