casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Member Functions | Private Attributes
casa::FuncExpression Class Reference

An expression executable as function. More...

#include <FuncExpression.h>

List of all members.

Public Member Functions

 FuncExpression ()
 Construct an empty executable expression.
 FuncExpression (const String &prog)
 Construct an executable expression from the given string.
 FuncExpression (const FuncExpression &other)
 Make this object a (deep) copy of other.
FuncExpressionoperator= (const FuncExpression &other)
 Make this object a (deep) copy of other.
 ~FuncExpression ()
 Destructor.
Bool create (const String &prog)
 Create an executable program.
const StringerrorMessage ()
 Get the current error message.
const vector
< FuncExprData::ExprOperator > & 
getCode () const
 Get the executable program.
uInt getNpar () const
 Get the number of parameters in executable program.
uInt getNdim () const
 Get the number of dimensions of executable program.
const vector
< FuncExprData::ExprOperator > & 
getCode ()
 Get reference to the compiled program.
const vector< Double > & getConst ()
 Get reference to compiled constants.
Bool exec (Double &res) const
 Execute the program.
void print (ostream &os) const
 Print the stack information (mainly for debugging)

Private Member Functions

Bool compStmt (MUString &prg)
 Compile a statement (in prg, which will be adjusted)
Bool compExpr (MUString &prg)
 Compile an expression (in prg, which will be adjusted)
Bool compTerm (MUString &prg)
 Compile a term (in prg, which will be adjusted)
Bool setOp (FuncExprData::ExprOperator &oper)
 Save an operation on compilation RP stack.
Bool setVal (const Double &val)
 Save a value on constant stack.
Bool setCode (const FuncExprData::ExprOperator &oper)
 Save an executable code.
void initState ()
 Initialise the state.

Private Attributes

FuncExprData exd
 The expression data /// later into a singleton.
String error_p
 The latest error message.
vector
< FuncExprData::ExprOperator
code_p
 The executable code stack (a vector, since it is a re-usable stack)
vector
< FuncExprData::ExprOperator
rps_p
 The reverse Polish work stack (a vector, since deque did not work on gcc)
FuncExprData::ExprCompState state_p
 The current state of the compilation.
vector< Doubleconst_p
 The current constant stack.
uInt npar_p
 The number of parameters in code.
uInt ndim_p
 The number of dimensions of expression.
vector< Doubleexec_p
 Executing stack.

Detailed Description

An expression executable as function.

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Synopsis

This class acts as an interface between a program given as a string (e.g. from a command line interface) and a Function class. The grammar of the language use to express the function is given below. The FuncEXpression can be used in all places where Functions can be used (like in the linear and non-linear Fitting classes.

An expression is created by either supplying a String to a constructor, or be setting a String.

Example

Motivation

To tie the Glish language to non-linear fitting procedures

Thrown Exceptions

To Do

Definition at line 84 of file FuncExpression.h.


Constructor & Destructor Documentation

Construct an empty executable expression.

casa::FuncExpression::FuncExpression ( const String prog) [explicit]

Construct an executable expression from the given string.

Make this object a (deep) copy of other.

Destructor.

Definition at line 99 of file FuncExpression.h.


Member Function Documentation

Compile an expression (in prg, which will be adjusted)

Compile a statement (in prg, which will be adjusted)

Compile a term (in prg, which will be adjusted)

Create an executable program.

Get the current error message.

Definition at line 105 of file FuncExpression.h.

References error_p.

Execute the program.

Get the executable program.

Get reference to the compiled program.

Definition at line 113 of file FuncExpression.h.

References code_p.

const vector<Double>& casa::FuncExpression::getConst ( ) [inline]

Get reference to compiled constants.

Definition at line 115 of file FuncExpression.h.

References const_p.

uInt casa::FuncExpression::getNdim ( ) const [inline]

Get the number of dimensions of executable program.

Definition at line 111 of file FuncExpression.h.

References ndim_p.

uInt casa::FuncExpression::getNpar ( ) const [inline]

Get the number of parameters in executable program.

Definition at line 109 of file FuncExpression.h.

References npar_p.

void casa::FuncExpression::initState ( ) [private]

Initialise the state.

FuncExpression& casa::FuncExpression::operator= ( const FuncExpression other)

Make this object a (deep) copy of other.

void casa::FuncExpression::print ( ostream &  os) const

Print the stack information (mainly for debugging)

Save an executable code.

Save an operation on compilation RP stack.

Bool casa::FuncExpression::setVal ( const Double val) [private]

Save a value on constant stack.


Member Data Documentation

The executable code stack (a vector, since it is a re-usable stack)

Definition at line 128 of file FuncExpression.h.

Referenced by getCode().

The current constant stack.

Definition at line 134 of file FuncExpression.h.

Referenced by getConst().

The latest error message.

Definition at line 126 of file FuncExpression.h.

Referenced by errorMessage().

The expression data /// later into a singleton.

Definition at line 124 of file FuncExpression.h.

vector<Double> casa::FuncExpression::exec_p [mutable, private]

Executing stack.

Definition at line 140 of file FuncExpression.h.

The number of dimensions of expression.

Definition at line 138 of file FuncExpression.h.

Referenced by getNdim().

The number of parameters in code.

Definition at line 136 of file FuncExpression.h.

Referenced by getNpar().

The reverse Polish work stack (a vector, since deque did not work on gcc)

Definition at line 130 of file FuncExpression.h.

The current state of the compilation.

Definition at line 132 of file FuncExpression.h.


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