VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkFunctionParser Class Reference

Parse and evaluate a mathematical expression. More...

#include <vtkFunctionParser.h>

Inheritance diagram for vtkFunctionParser:
[legend]
Collaboration diagram for vtkFunctionParser:
[legend]

Public Types

typedef vtkObject Superclass
 
- Public Types inherited from vtkObject
typedef vtkObjectBase Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkFunctionParserNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
unsigned long int GetMTime ()
 
int IsScalarResult ()
 
int IsVectorResult ()
 
double GetScalarResult ()
 
char * GetScalarVariableName (int i)
 
char * GetVectorVariableName (int i)
 
void RemoveAllVariables ()
 
void RemoveScalarVariables ()
 
void RemoveVectorVariables ()
 
void CheckExpression (int &pos, char **error)
 
void InvalidateFunction ()
 
void SetFunction (const char *function)
 
virtual char * GetFunction ()
 
doubleGetVectorResult ()
 
void GetVectorResult (double result[3])
 
void SetScalarVariableValue (const char *variableName, double value)
 
void SetScalarVariableValue (int i, double value)
 
double GetScalarVariableValue (const char *variableName)
 
double GetScalarVariableValue (int i)
 
void SetVectorVariableValue (const char *variableName, double xValue, double yValue, double zValue)
 
void SetVectorVariableValue (const char *variableName, const double values[3])
 
void SetVectorVariableValue (int i, double xValue, double yValue, double zValue)
 
void SetVectorVariableValue (int i, const double values[3])
 
doubleGetVectorVariableValue (const char *variableName)
 
void GetVectorVariableValue (const char *variableName, double value[3])
 
doubleGetVectorVariableValue (int i)
 
void GetVectorVariableValue (int i, double value[3])
 
virtual int GetNumberOfScalarVariables ()
 
virtual int GetNumberOfVectorVariables ()
 
virtual void SetReplaceInvalidValues (int)
 
virtual int GetReplaceInvalidValues ()
 
virtual void ReplaceInvalidValuesOn ()
 
virtual void ReplaceInvalidValuesOff ()
 
virtual void SetReplacementValue (double)
 
virtual double GetReplacementValue ()
 
- Public Member Functions inherited from vtkObject
vtkObjectNewInstance () const
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
bool GetDebug ()
 
void SetDebug (bool debugFlag)
 
virtual void Modified ()
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
void SetReferenceCount (int)
 
void PrintRevisions (ostream &)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 

Static Public Member Functions

static vtkFunctionParserNew ()
 
static int IsTypeOf (const char *type)
 
static vtkFunctionParserSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkObject
static int IsTypeOf (const char *type)
 
static vtkObjectSafeDownCast (vtkObjectBase *o)
 
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static int IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkFunctionParser ()
 
 ~vtkFunctionParser ()
 
int Parse ()
 
bool Evaluate ()
 
int CheckSyntax ()
 
void CopyParseError (int &position, char **error)
 
void RemoveSpaces ()
 
char * RemoveSpacesFrom (const char *variableName)
 
int OperatorWithinVariable (int idx)
 
int BuildInternalFunctionStructure ()
 
void BuildInternalSubstringStructure (int beginIndex, int endIndex)
 
void AddInternalByte (unsigned char newByte)
 
int IsSubstringCompletelyEnclosed (int beginIndex, int endIndex)
 
int FindEndOfMathFunction (int beginIndex)
 
int FindEndOfMathConstant (int beginIndex)
 
int IsVariableName (int currentIndex)
 
int IsElementaryOperator (int op)
 
int GetMathFunctionNumber (int currentIndex)
 
int GetMathFunctionNumberByCheckingParenthesis (int currentIndex)
 
int GetMathFunctionStringLength (int mathFunctionNumber)
 
int GetMathConstantNumber (int currentIndex)
 
int GetMathConstantStringLength (int mathConstantNumber)
 
unsigned char GetElementaryOperatorNumber (char op)
 
unsigned char GetOperandNumber (int currentIndex)
 
int GetVariableNameLength (int variableNumber)
 
int DisambiguateOperators ()
 
virtual void SetParseError (const char *)
 
int FindPositionInOriginalFunction (const int &pos)
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
virtual void RegisterInternal (vtkObjectBase *, int check)
 
virtual void UnRegisterInternal (vtkObjectBase *, int check)
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

char * Function
 
char * FunctionWithSpaces
 
int FunctionLength
 
int NumberOfScalarVariables
 
int NumberOfVectorVariables
 
char ** ScalarVariableNames
 
char ** VectorVariableNames
 
doubleScalarVariableValues
 
double ** VectorVariableValues
 
unsigned char * ByteCode
 
int ByteCodeSize
 
doubleImmediates
 
int ImmediatesSize
 
doubleStack
 
int StackSize
 
int StackPointer
 
vtkTimeStamp FunctionMTime
 
vtkTimeStamp ParseMTime
 
vtkTimeStamp VariableMTime
 
vtkTimeStamp EvaluateMTime
 
vtkTimeStamp CheckMTime
 
int ReplaceInvalidValues
 
double ReplacementValue
 
int ParseErrorPositon
 
char * ParseError
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
vtkAtomicInt32 ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Detailed Description

Parse and evaluate a mathematical expression.

vtkFunctionParser is a class that takes in a mathematical expression as a char string, parses it, and evaluates it at the specified values of the variables in the input string.

You can use the "if" operator to create conditional expressions such as if ( test, trueresult, falseresult). These evaluate the boolean valued test expression and then evaluate either the trueresult or the falseresult expression to produce a final (scalar or vector valued) value. "test" may contain <,>,=,|,&, and () and all three subexpressions can evaluate arbitrary function operators (ln, cos, +, if, etc)

Thanks:
Juha Nieminen (juha..nosp@m.niem.nosp@m.inen@.nosp@m.gmai.nosp@m.l.com) for relicensing this branch of the function parser code that this class is based upon under the new BSD license so that it could be used in VTK. Note, the BSD license applies to this version of the function parser only (by permission of the author), and not the original library.
Thanks:
Thomas Dunne (thoma.nosp@m.s.du.nosp@m.nne@i.nosp@m.wr.u.nosp@m.ni-he.nosp@m.idel.nosp@m.berg..nosp@m.de) for adding code for two-parameter-parsing and a few functions (sign, min, max).
Thanks:
Sid Sydoriak (sxs@l.nosp@m.anl..nosp@m.gov) for adding boolean operations and conditional expressions and for fixing a variety of bugs.
Tests:
vtkFunctionParser (Tests)

Definition at line 130 of file vtkFunctionParser.h.

Member Typedef Documentation

Definition at line 134 of file vtkFunctionParser.h.

Constructor & Destructor Documentation

vtkFunctionParser::vtkFunctionParser ( )
protected
vtkFunctionParser::~vtkFunctionParser ( )
protected

Member Function Documentation

static vtkFunctionParser* vtkFunctionParser::New ( )
static
static int vtkFunctionParser::IsTypeOf ( const char *  type)
static
virtual int vtkFunctionParser::IsA ( const char *  name)
virtual

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

static vtkFunctionParser* vtkFunctionParser::SafeDownCast ( vtkObjectBase o)
static
virtual vtkObjectBase* vtkFunctionParser::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkObject.

vtkFunctionParser* vtkFunctionParser::NewInstance ( ) const
void vtkFunctionParser::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

unsigned long int vtkFunctionParser::GetMTime ( )
virtual

Return parser's MTime

Reimplemented from vtkObject.

void vtkFunctionParser::SetFunction ( const char *  function)

Set/Get input string to evaluate.

virtual char* vtkFunctionParser::GetFunction ( )
virtual

Set/Get input string to evaluate.

int vtkFunctionParser::IsScalarResult ( )

Check whether the result is a scalar result. If it isn't, then either the result is a vector or an error has occurred.

int vtkFunctionParser::IsVectorResult ( )

Check whether the result is a vector result. If it isn't, then either the result is scalar or an error has occurred.

double vtkFunctionParser::GetScalarResult ( )

Get a scalar result from evaluating the input function.

double* vtkFunctionParser::GetVectorResult ( )

Get a vector result from evaluating the input function.

void vtkFunctionParser::GetVectorResult ( double  result[3])
inline

Get a vector result from evaluating the input function.

Definition at line 160 of file vtkFunctionParser.h.

void vtkFunctionParser::SetScalarVariableValue ( const char *  variableName,
double  value 
)

Set the value of a scalar variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

void vtkFunctionParser::SetScalarVariableValue ( int  i,
double  value 
)

Set the value of a scalar variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

double vtkFunctionParser::GetScalarVariableValue ( const char *  variableName)

Get the value of a scalar variable.

double vtkFunctionParser::GetScalarVariableValue ( int  i)

Get the value of a scalar variable.

void vtkFunctionParser::SetVectorVariableValue ( const char *  variableName,
double  xValue,
double  yValue,
double  zValue 
)

Set the value of a vector variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

void vtkFunctionParser::SetVectorVariableValue ( const char *  variableName,
const double  values[3] 
)
inline

Set the value of a vector variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

Definition at line 187 of file vtkFunctionParser.h.

void vtkFunctionParser::SetVectorVariableValue ( int  i,
double  xValue,
double  yValue,
double  zValue 
)

Set the value of a vector variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

void vtkFunctionParser::SetVectorVariableValue ( int  i,
const double  values[3] 
)
inline

Set the value of a vector variable. If a variable with this name exists, then its value will be set to the new value. If there is not already a variable with this name, variableName will be added to the list of variables, and its value will be set to the new value.

Definition at line 192 of file vtkFunctionParser.h.

double* vtkFunctionParser::GetVectorVariableValue ( const char *  variableName)

Get the value of a vector variable.

void vtkFunctionParser::GetVectorVariableValue ( const char *  variableName,
double  value[3] 
)
inline

Get the value of a vector variable.

Definition at line 199 of file vtkFunctionParser.h.

double* vtkFunctionParser::GetVectorVariableValue ( int  i)

Get the value of a vector variable.

void vtkFunctionParser::GetVectorVariableValue ( int  i,
double  value[3] 
)
inline

Get the value of a vector variable.

Definition at line 203 of file vtkFunctionParser.h.

virtual int vtkFunctionParser::GetNumberOfScalarVariables ( )
virtual

Get the number of scalar variables.

virtual int vtkFunctionParser::GetNumberOfVectorVariables ( )
virtual

Get the number of vector variables.

char* vtkFunctionParser::GetScalarVariableName ( int  i)

Get the ith scalar variable name.

char* vtkFunctionParser::GetVectorVariableName ( int  i)

Get the ith vector variable name.

void vtkFunctionParser::RemoveAllVariables ( )

Remove all the current variables.

void vtkFunctionParser::RemoveScalarVariables ( )

Remove all the scalar variables.

void vtkFunctionParser::RemoveVectorVariables ( )

Remove all the vector variables.

virtual void vtkFunctionParser::SetReplaceInvalidValues ( int  )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

virtual int vtkFunctionParser::GetReplaceInvalidValues ( )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

virtual void vtkFunctionParser::ReplaceInvalidValuesOn ( )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

virtual void vtkFunctionParser::ReplaceInvalidValuesOff ( )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

virtual void vtkFunctionParser::SetReplacementValue ( double  )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

virtual double vtkFunctionParser::GetReplacementValue ( )
virtual

When ReplaceInvalidValues is on, all invalid values (such as sqrt(-2), note that function parser does not handle complex numbers) will be replaced by ReplacementValue. Otherwise an error will be reported

void vtkFunctionParser::CheckExpression ( int pos,
char **  error 
)

Check the validity of the function expression.

void vtkFunctionParser::InvalidateFunction ( )

Allow the user to force the function to be re-parsed

int vtkFunctionParser::Parse ( )
protected
bool vtkFunctionParser::Evaluate ( )
protected

Evaluate the function, returning true on success, false on failure.

int vtkFunctionParser::CheckSyntax ( )
protected
void vtkFunctionParser::CopyParseError ( int position,
char **  error 
)
protected
void vtkFunctionParser::RemoveSpaces ( )
protected
char* vtkFunctionParser::RemoveSpacesFrom ( const char *  variableName)
protected
int vtkFunctionParser::OperatorWithinVariable ( int  idx)
protected
int vtkFunctionParser::BuildInternalFunctionStructure ( )
protected
void vtkFunctionParser::BuildInternalSubstringStructure ( int  beginIndex,
int  endIndex 
)
protected
void vtkFunctionParser::AddInternalByte ( unsigned char  newByte)
protected
int vtkFunctionParser::IsSubstringCompletelyEnclosed ( int  beginIndex,
int  endIndex 
)
protected
int vtkFunctionParser::FindEndOfMathFunction ( int  beginIndex)
protected
int vtkFunctionParser::FindEndOfMathConstant ( int  beginIndex)
protected
int vtkFunctionParser::IsVariableName ( int  currentIndex)
protected
int vtkFunctionParser::IsElementaryOperator ( int  op)
protected
int vtkFunctionParser::GetMathFunctionNumber ( int  currentIndex)
protected
int vtkFunctionParser::GetMathFunctionNumberByCheckingParenthesis ( int  currentIndex)
protected
int vtkFunctionParser::GetMathFunctionStringLength ( int  mathFunctionNumber)
protected
int vtkFunctionParser::GetMathConstantNumber ( int  currentIndex)
protected
int vtkFunctionParser::GetMathConstantStringLength ( int  mathConstantNumber)
protected
unsigned char vtkFunctionParser::GetElementaryOperatorNumber ( char  op)
protected
unsigned char vtkFunctionParser::GetOperandNumber ( int  currentIndex)
protected
int vtkFunctionParser::GetVariableNameLength ( int  variableNumber)
protected
int vtkFunctionParser::DisambiguateOperators ( )
protected
virtual void vtkFunctionParser::SetParseError ( const char *  )
protectedvirtual
int vtkFunctionParser::FindPositionInOriginalFunction ( const int pos)
protected

Member Data Documentation

char* vtkFunctionParser::Function
protected

Definition at line 294 of file vtkFunctionParser.h.

char* vtkFunctionParser::FunctionWithSpaces
protected

Definition at line 295 of file vtkFunctionParser.h.

int vtkFunctionParser::FunctionLength
protected

Definition at line 297 of file vtkFunctionParser.h.

int vtkFunctionParser::NumberOfScalarVariables
protected

Definition at line 298 of file vtkFunctionParser.h.

int vtkFunctionParser::NumberOfVectorVariables
protected

Definition at line 299 of file vtkFunctionParser.h.

char** vtkFunctionParser::ScalarVariableNames
protected

Definition at line 300 of file vtkFunctionParser.h.

char** vtkFunctionParser::VectorVariableNames
protected

Definition at line 301 of file vtkFunctionParser.h.

double* vtkFunctionParser::ScalarVariableValues
protected

Definition at line 302 of file vtkFunctionParser.h.

double** vtkFunctionParser::VectorVariableValues
protected

Definition at line 303 of file vtkFunctionParser.h.

unsigned char* vtkFunctionParser::ByteCode
protected

Definition at line 304 of file vtkFunctionParser.h.

int vtkFunctionParser::ByteCodeSize
protected

Definition at line 305 of file vtkFunctionParser.h.

double* vtkFunctionParser::Immediates
protected

Definition at line 306 of file vtkFunctionParser.h.

int vtkFunctionParser::ImmediatesSize
protected

Definition at line 307 of file vtkFunctionParser.h.

double* vtkFunctionParser::Stack
protected

Definition at line 308 of file vtkFunctionParser.h.

int vtkFunctionParser::StackSize
protected

Definition at line 309 of file vtkFunctionParser.h.

int vtkFunctionParser::StackPointer
protected

Definition at line 310 of file vtkFunctionParser.h.

vtkTimeStamp vtkFunctionParser::FunctionMTime
protected

Definition at line 312 of file vtkFunctionParser.h.

vtkTimeStamp vtkFunctionParser::ParseMTime
protected

Definition at line 313 of file vtkFunctionParser.h.

vtkTimeStamp vtkFunctionParser::VariableMTime
protected

Definition at line 314 of file vtkFunctionParser.h.

vtkTimeStamp vtkFunctionParser::EvaluateMTime
protected

Definition at line 315 of file vtkFunctionParser.h.

vtkTimeStamp vtkFunctionParser::CheckMTime
protected

Definition at line 316 of file vtkFunctionParser.h.

int vtkFunctionParser::ReplaceInvalidValues
protected

Definition at line 318 of file vtkFunctionParser.h.

double vtkFunctionParser::ReplacementValue
protected

Definition at line 319 of file vtkFunctionParser.h.

int vtkFunctionParser::ParseErrorPositon
protected

Definition at line 321 of file vtkFunctionParser.h.

char* vtkFunctionParser::ParseError
protected

Definition at line 322 of file vtkFunctionParser.h.


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