vtkFunctionParser Class Reference

#include <vtkFunctionParser.h>

Inheritance diagram for vtkFunctionParser:

Inheritance graph
[legend]
Collaboration diagram for vtkFunctionParser:

Collaboration graph
[legend]

List of all members.


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:
Thomas Dunne (thomas.dunne@iwr.uni-heidelberg.de) for adding code for two-parameter-parsing and a few functions (sign, min, max).
Thanks:
Sid Sydoriak (sxs@lanl.gov) for adding boolean operations and conditional expressions and for fixing a variety of bugs.

Definition at line 118 of file vtkFunctionParser.h.


Public Types

typedef vtkObject Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
int IsScalarResult ()
int IsVectorResult ()
double GetScalarResult ()
char * GetScalarVariableName (int i)
char * GetVectorVariableName (int i)
void RemoveAllVariables ()
void RemoveScalarVariables ()
void RemoveVectorVariables ()
void SetFunction (const char *function)
virtual char * GetFunction ()
double * GetVectorResult ()
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])
double * GetVectorVariableValue (const char *variableName)
void GetVectorVariableValue (const char *variableName, double value[3])
double * GetVectorVariableValue (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 ()

Static Public Member Functions

static vtkFunctionParserNew ()
static int IsTypeOf (const char *type)
static vtkFunctionParserSafeDownCast (vtkObject *o)

Protected Member Functions

 vtkFunctionParser ()
 ~vtkFunctionParser ()
int Parse ()
bool Evaluate ()
int CheckSyntax ()
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 GetMathFunctionStringLength (int mathFunctionNumber)
int GetMathConstantNumber (int currentIndex)
int GetMathConstantStringLength (int mathConstantNumber)
int GetElementaryOperatorNumber (char op)
int GetOperandNumber (int currentIndex)
int GetVariableNameLength (int variableNumber)
int DisambiguateOperators ()

Protected Attributes

char * Function
int FunctionLength
int NumberOfScalarVariables
int NumberOfVectorVariables
char ** ScalarVariableNames
char ** VectorVariableNames
double * ScalarVariableValues
double ** VectorVariableValues
unsigned char * ByteCode
int ByteCodeSize
double * Immediates
int ImmediatesSize
double * Stack
int StackSize
int StackPointer
vtkTimeStamp FunctionMTime
vtkTimeStamp ParseMTime
vtkTimeStamp VariableMTime
vtkTimeStamp EvaluateMTime
int ReplaceInvalidValues
double ReplacementValue

Member Typedef Documentation

Reimplemented from vtkObject.

Definition at line 122 of file vtkFunctionParser.h.


Constructor & Destructor Documentation

vtkFunctionParser::vtkFunctionParser (  )  [protected]

vtkFunctionParser::~vtkFunctionParser (  )  [protected]


Member Function Documentation

static vtkFunctionParser* vtkFunctionParser::New (  )  [static]

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkFunctionParser::GetClassName (  )  [virtual]

Reimplemented from vtkObject.

static int vtkFunctionParser::IsTypeOf ( const char *  name  )  [static]

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

Reimplemented from vtkObject.

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 vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

static vtkFunctionParser* vtkFunctionParser::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkObject.

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.

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 145 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 172 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 177 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 184 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 188 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

int vtkFunctionParser::Parse (  )  [protected]

bool vtkFunctionParser::Evaluate (  )  [protected]

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

int vtkFunctionParser::CheckSyntax (  )  [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::GetMathFunctionStringLength ( int  mathFunctionNumber  )  [protected]

int vtkFunctionParser::GetMathConstantNumber ( int  currentIndex  )  [protected]

int vtkFunctionParser::GetMathConstantStringLength ( int  mathConstantNumber  )  [protected]

int vtkFunctionParser::GetElementaryOperatorNumber ( char  op  )  [protected]

int vtkFunctionParser::GetOperandNumber ( int  currentIndex  )  [protected]

int vtkFunctionParser::GetVariableNameLength ( int  variableNumber  )  [protected]

int vtkFunctionParser::DisambiguateOperators (  )  [protected]


Member Data Documentation

char* vtkFunctionParser::Function [protected]

Definition at line 264 of file vtkFunctionParser.h.

Definition at line 265 of file vtkFunctionParser.h.

Definition at line 266 of file vtkFunctionParser.h.

Definition at line 267 of file vtkFunctionParser.h.

Definition at line 268 of file vtkFunctionParser.h.

Definition at line 269 of file vtkFunctionParser.h.

Definition at line 270 of file vtkFunctionParser.h.

Definition at line 271 of file vtkFunctionParser.h.

unsigned char* vtkFunctionParser::ByteCode [protected]

Definition at line 272 of file vtkFunctionParser.h.

Definition at line 273 of file vtkFunctionParser.h.

double* vtkFunctionParser::Immediates [protected]

Definition at line 274 of file vtkFunctionParser.h.

Definition at line 275 of file vtkFunctionParser.h.

double* vtkFunctionParser::Stack [protected]

Definition at line 276 of file vtkFunctionParser.h.

Definition at line 277 of file vtkFunctionParser.h.

Definition at line 278 of file vtkFunctionParser.h.

Definition at line 280 of file vtkFunctionParser.h.

Definition at line 281 of file vtkFunctionParser.h.

Definition at line 282 of file vtkFunctionParser.h.

Definition at line 283 of file vtkFunctionParser.h.

Definition at line 285 of file vtkFunctionParser.h.

Definition at line 286 of file vtkFunctionParser.h.


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

Generated on Sat Dec 27 13:25:44 2008 for VTK by  doxygen 1.5.6