#include <c4d_general.h>
A class to evaluate mathematical expressions.
Public Member Functions | |
Bool | Eval (const maxon::String &str, Int32 *error, Float *res, Int32 unit=0, Int32 angletype=0, Int32 basis=10) |
Bool | EvalLong (const maxon::String &str, Int32 *error, Int32 *res, Int32 unit, Int32 basis) |
Bool | AddVar (const maxon::String &str, Float *value, Bool case_sensitive=false) |
Bool | RemoveVar (const maxon::String &s, Bool case_sensitive=false) |
Bool | RemoveAllVars () |
void | GetParserData (ParserCache *p) |
Bool | Init (const maxon::String &s, Int32 *error, Int32 unit=0, Int32 angle_unit=0, Int32 base=10) |
Bool | ReEval (Float *result, Int32 *error) |
Bool | Calculate (const ParserCache *pdat, Float *result, Int32 *error) |
Bool | AddVarLong (const maxon::String &str, Int32 *value, Bool case_sensitive=false) |
Bool | ReEvalLong (Int32 *result, Int32 *error) |
Bool | CalculateLong (const ParserCache *pdat, Int32 *result, Int32 *error) |
Bool | Reset (ParserCache *p=nullptr) |
Static Public Member Functions | |
static Parser * | Alloc () |
static void | Free (Parser *&pr) |
Private Member Functions | |
Parser () | |
~Parser () | |
Shader Code Generation | |
Bool | GenerateShaderCode (const maxon::String &resultVariableName, maxon::String *result) |
Bool | GenerateShaderCodeFromCache (const ParserCache *pdat, const maxon::String &resultVariableName, maxon::String *result) |
|
private |
|
private |
|
static |
|
static |
Bool Eval | ( | const maxon::String & | str, |
Int32 * | error, | ||
Float * | res, | ||
Int32 | unit = 0 , |
||
Int32 | angletype = 0 , |
||
Int32 | basis = 10 |
||
) |
Evaluates a string using the variables added with AddVar() and the built-in expressions supported by Cinema 4D. (See the Formula object in the manual.)
[in] | str | The expression to evaluate. |
[out] | error | Assigned an error value if failed: NEWPARSERERROR |
[out] | res | Assigned the result of the expression. |
[in] | unit | The unit used in the expression: UNIT |
[in] | angletype | The angle unit used in the expression: ANGLE |
[in] | basis | The base of the number system used in the expression. |
Evaluates a string using the integer variables added with AddVarLong() and the built-in expressions supported by Cinema 4D. (See the Formula object in the manual.)
[in] | str | The expression to evaluate. |
[out] | error | Assigned an error values if failed: NEWPARSERERROR |
[out] | res | Assigned the result of the expression. |
[in] | unit | The unit used in the expression: UNIT |
[in] | basis | The base of the number system used in the expression. |
Bool AddVar | ( | const maxon::String & | str, |
Float * | value, | ||
Bool | case_sensitive = false |
||
) |
Adds a variable to the parser to be evaluated.
Example:
[in] | str | The name of the variable to add, this is the name that will be used in the expression string. |
[in] | value | Assigned the evaluated value for the variable. |
[in] | case_sensitive | true if the variable string is case sensitive, otherwise false. |
Bool RemoveVar | ( | const maxon::String & | s, |
Bool | case_sensitive = false |
||
) |
Removes a variable from the parser evaluation.
[in] | s | The name of the variable to be removed. |
[in] | case_sensitive | true if the variable string is case sensitive, otherwise false. |
Bool RemoveAllVars | ( | ) |
Remove all variables from the parser evaluation.
void GetParserData | ( | ParserCache * | p | ) |
Retrieves the cached parser data.
[out] | p | Assigned the parser cache. The caller owns the pointed parser cache. This is used for instance by the Calculate() method. It makes possible to use multiple caches with one parser. |
Bool Init | ( | const maxon::String & | s, |
Int32 * | error, | ||
Int32 | unit = 0 , |
||
Int32 | angle_unit = 0 , |
||
Int32 | base = 10 |
||
) |
Initializes the parser with an expression string.
[in] | s | The expression string for the initialization. |
[out] | error | Assigned an error value if failed: NEWPARSERERROR |
[in] | unit | The unit used in the expression: UNIT |
[in] | angle_unit | The angle unit used in the expression: ANGLE |
[in] | base | The base of the number system used in the expression. |
Re-evaluates the expression.
[out] | result | Assigned the result of the expression. |
[out] | error | Assigned an error values if failed: NEWPARSERERROR |
Bool Calculate | ( | const ParserCache * | pdat, |
Float * | result, | ||
Int32 * | error | ||
) |
Calculates the result for an expression in an existing parser cache.
[in] | pdat | A parser cache. |
[out] | result | Assigned the result of the expression. |
[out] | error | Assigned an error values if failed: NEWPARSERERROR |
Bool AddVarLong | ( | const maxon::String & | str, |
Int32 * | value, | ||
Bool | case_sensitive = false |
||
) |
Adds an integer variable to the parser to be evaluated. Example:
[in] | str | The name of the variable to add, this is the name that will be used in the string. |
[in] | value | Assigned the evaluated value for the variable. |
[in] | case_sensitive | true if the variable string is case sensitive, otherwise false. |
Re-evaluates the expression.
[out] | result | Assigned the result of the expression. |
[out] | error | Assigned an error values if failed: NEWPARSERERROR |
Bool CalculateLong | ( | const ParserCache * | pdat, |
Int32 * | result, | ||
Int32 * | error | ||
) |
Calculates the result for an expression in an existing parser cache.
[in] | pdat | A parser cache. |
[out] | result | Assigned the result of the expression. |
[out] | error | Assigned an error values if failed: NEWPARSERERROR |
Bool Reset | ( | ParserCache * | p = nullptr | ) |
Resets certain functions used by the parser (Random etc.).
This is necessary in animated situations, otherwise results will not be consistent for the same frame.
[in] | p | The parser cache to reset. |
Bool GenerateShaderCode | ( | const maxon::String & | resultVariableName, |
maxon::String * | result | ||
) |
Returns an OpenGL Shading Language representation of the parsed expression.
[in] | resultVariableName | The name of the variable in the shade code to which the result will be assigned. |
[out] | result | The generated shader code. |
Bool GenerateShaderCodeFromCache | ( | const ParserCache * | pdat, |
const maxon::String & | resultVariableName, | ||
maxon::String * | result | ||
) |
Returns an OpenGL Shading Language representation of the parsed expression.
[in] | pdat | A parser cache. |
[in] | resultVariableName | The name of the variable in the shade code to which the result will be assigned. |
[out] | result | The generated shader code. |