FunctionWrapper.h

Classes

FunctionWrapper -- Construct nD function objects from C++ functions (full description)

class FunctionWrapper : public WrapperParam<T>

Interface

Public Members
FunctionWrapper()
FunctionWrapper(T(*f)())
FunctionWrapper(T(*f)( const T&), const Bool isPar)
FunctionWrapper(T(*f)(const f<T>&), const Bool isPar)
FunctionWrapper(T(*f)(const T&))
FunctionWrapper(T(*f)(const T&, const T&), const T &par)
FunctionWrapper(T(*f)(const T&, const f<T>&), const f<T> &par)
FunctionWrapper(T(*f)(const f<T>&), const Int dim=1)
FunctionWrapper(T(*f)(const f<T>&, const T&), const T &par, const uInt dim=1)
FunctionWrapper(T(*f)(const f<T>&, const f<T>&), const f<T> &par, const uInt dim=1)
FunctionWrapper(const FunctionWrapper<T> &other)
FunctionWrapper<T> &operator=(const FunctionWrapper<T> &other)
virtual ~FunctionWrapper()
virtual T eval(typename Function<T>::FunctionArg x) const
virtual uInt ndim() const
virtual Function<T> *clone() const

Description

Review Status

Date Reviewed:
1996/02/22

Prerequisite

Synopsis

This class is provided so that user can quickly construct a function object from a C++ function pointer without having to write a function class. The constructor constructs a function object from a function pointer, and an optional parameter list. Parameters are necessary if the function has to be used in a functional fitting process (see GenericL2Fit).

The general function signature is f(x;p), where x represents the arguments, and p the parameters. The allowed signatures of the function include all combinations of arguments and parameters, and are:

Example

    Float func(const Vector<Float>& x) {return x(0)*x(1);}        // x*y
    // Convert C++ functions to Functionals
    FunctionWrapper<Float> Func(func,2);
    

Member Description

FunctionWrapper()

Default constructor, to enable arrays

FunctionWrapper(T(*f)())

A function with no parameters and no arguments.

FunctionWrapper(T(*f)( const T&), const Bool isPar)

A function with parameter and no arguments (Note value of isPar irrelevant)

FunctionWrapper(T(*f)(const f<T>&), const Bool isPar)

A function with parameters and no arguments. (Note value of isPar irrelevant)

FunctionWrapper(T(*f)(const T&))

Construct a 1-dimensional function with no parameters.

FunctionWrapper(T(*f)(const T&, const T&), const T &par)

Construct a 1-dimensional function with parameter.

FunctionWrapper(T(*f)(const T&, const f<T>&), const f<T> &par)

Construct a 1-dimensional function with parameters.

FunctionWrapper(T(*f)(const f<T>&), const Int dim=1)

Construct an n-dimensional function with no parameters.

FunctionWrapper(T(*f)(const f<T>&, const T&), const T &par, const uInt dim=1)

Construct an n-dimensional function with parameter.

FunctionWrapper(T(*f)(const f<T>&, const f<T>&), const f<T> &par, const uInt dim=1)

Construct an n-dimensional function with parameters.

FunctionWrapper(const FunctionWrapper<T> &other)

Copy constructor (deep copy)

FunctionWrapper<T> &operator=(const FunctionWrapper<T> &other)

Copy assignment (deep copy)

virtual ~FunctionWrapper()

Destructor

virtual T eval(typename Function<T>::FunctionArg x) const

Evaluate the function at x.

virtual uInt ndim() const

Get the dimensionality

virtual Function<T> *clone() const

Return a copy of this object from the heap. The caller is responsible for deleting this pointer.