openshot-audio
0.1.7
|
#include <juce_Expression.h>
Classes | |
struct | Helpers |
class | ParseError |
class | Scope |
struct | Symbol |
class | Term |
Public Types | |
enum | Type { constantType, functionType, operatorType, symbolType } |
Public Member Functions | |
Expression () | |
~Expression () | |
Expression (double constant) | |
Expression (const Expression &) | |
Expression & | operator= (const Expression &) |
Expression (const String &stringToParse) | |
String | toString () const |
Expression | operator+ (const Expression &) const |
Expression | operator- (const Expression &) const |
Expression | operator* (const Expression &) const |
Expression | operator/ (const Expression &) const |
Expression | operator- () const |
double | evaluate () const |
double | evaluate (const Scope &scope) const |
double | evaluate (const Scope &scope, String &evaluationError) const |
Expression | adjustedToGiveNewResult (double targetValue, const Scope &scope) const |
Expression | withRenamedSymbol (const Symbol &oldSymbol, const String &newName, const Scope &scope) const |
bool | referencesSymbol (const Symbol &symbol, const Scope &scope) const |
bool | usesAnySymbols () const |
void | findReferencedSymbols (Array< Symbol > &results, const Scope &scope) const |
Type | getType () const noexcept |
String | getSymbolOrFunction () const |
int | getNumInputs () const |
Expression | getInput (int index) const |
Static Public Member Functions | |
static Expression | symbol (const String &symbol) |
static Expression | function (const String &functionName, const Array< Expression > ¶meters) |
static Expression | parse (String::CharPointerType &stringToParse) |
Friends | |
class | Term |
struct | Helpers |
struct | ContainerDeletePolicy< Term > |
class | ReferenceCountedObjectPtr< Term > |
A class for dynamically evaluating simple numeric expressions.
This class can parse a simple C-style string expression involving floating point numbers, named symbols and functions. The basic arithmetic operations of +, -, *, / are supported, as well as parentheses, and any alphanumeric identifiers are assumed to be named symbols which will be resolved when the expression is evaluated.
Expressions which use identifiers and functions require a subclass of Expression::Scope to be supplied when evaluating them, and this object is expected to be able to resolve the symbol names and perform the functions that are used.
enum Expression::Type |
Expression type.
Enumerator | |
---|---|
constantType | |
functionType | |
operatorType | |
symbolType |
Expression::Expression | ( | ) |
Creates a simple expression with a value of 0.
Expression::~Expression | ( | ) |
Destructor.
|
explicit |
Creates a simple expression with a specified constant value.
Expression::Expression | ( | const Expression & | other | ) |
Creates a copy of an expression.
|
explicit |
Creates an expression by parsing a string. If there's a syntax error in the string, this will throw a ParseError exception.
ParseError |
Expression Expression::adjustedToGiveNewResult | ( | double | targetValue, |
const Scope & | scope | ||
) | const |
Attempts to return an expression which is a copy of this one, but with a constant adjusted to make the expression resolve to a target value.
E.g. if the expression is "x + 10" and x is 5, then asking for a target value of 8 will return the expression "x + 3". Obviously some expressions can't be reversed in this way, in which case they might just be adjusted by adding a constant to the original expression.
Expression::EvaluationError |
double Expression::evaluate | ( | ) | const |
double Expression::evaluate | ( | const Scope & | scope | ) | const |
Evaluates this expression, providing a scope that should be able to evaluate any symbols or functions that it uses. To find out about any errors during evaluation, use the other version of this method which takes a String parameter.
Evaluates this expression, providing a scope that should be able to evaluate any symbols or functions that it uses.
Returns a list of all symbols that may be needed to resolve this expression in the given scope.
|
static |
Returns an Expression which is a function call.
Expression Expression::getInput | ( | int | index | ) | const |
Retrieves one of the inputs to this expression.
int Expression::getNumInputs | ( | ) | const |
Returns the number of inputs to this expression.
String Expression::getSymbolOrFunction | ( | ) | const |
If this expression is a symbol, function or operator, this returns its identifier.
|
noexcept |
Returns the type of this expression.
Expression Expression::operator* | ( | const Expression & | other | ) | const |
Returns an expression which is a multiplication operation of two existing expressions.
Expression Expression::operator+ | ( | const Expression & | other | ) | const |
Returns an expression which is an addition operation of two existing expressions.
Expression Expression::operator- | ( | const Expression & | other | ) | const |
Returns an expression which is a subtraction operation of two existing expressions.
Expression Expression::operator- | ( | ) | const |
Returns an expression which performs a negation operation on an existing expression.
Expression Expression::operator/ | ( | const Expression & | other | ) | const |
Returns an expression which is a division operation of two existing expressions.
Expression & Expression::operator= | ( | const Expression & | other | ) |
Copies another expression.
|
static |
Returns an Expression which parses a string from a character pointer, and updates the pointer to indicate where it finished.
The pointer is incremented so that on return, it indicates the character that follows the end of the expression that was parsed.
If there's a syntax error in the string, this will throw a ParseError exception.
ParseError |
Returns true if this expression makes use of the specified symbol. If a suitable scope is supplied, the search will dereference and recursively check all symbols, so that it can be determined whether this expression relies on the given symbol at any level in its evaluation. If the scope parameter is null, this just checks whether the expression contains any direct references to the symbol.
Expression::EvaluationError |
|
static |
Returns an Expression which is an identifier reference.
String Expression::toString | ( | ) | const |
Returns a string version of the expression.
bool Expression::usesAnySymbols | ( | ) | const |
Returns true if this expression contains any symbols.
Expression Expression::withRenamedSymbol | ( | const Symbol & | oldSymbol, |
const String & | newName, | ||
const Scope & | scope | ||
) | const |
Returns a copy of this expression in which all instances of a given symbol have been renamed.
|
friend |
|
friend |
|
friend |
|
friend |