OpenShot Audio Library | OpenShotAudio
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
juce_Expression.h
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
//==============================================================================
43
class
JUCE_API
Expression
44
{
45
public
:
46
//==============================================================================
48
Expression
();
49
51
~Expression
();
52
54
Expression
(
const
Expression
&);
55
57
Expression
& operator= (
const
Expression
&);
58
60
Expression
(
Expression
&&)
noexcept
;
61
63
Expression
& operator= (
Expression
&&)
noexcept
;
64
66
explicit
Expression
(
double
constant);
67
71
Expression
(
const
String
& stringToParse,
String
& parseError);
72
74
String
toString
()
const
;
75
77
Expression
operator+ (
const
Expression
&)
const
;
79
Expression
operator- (
const
Expression
&)
const
;
81
Expression
operator* (
const
Expression
&)
const
;
83
Expression
operator/ (
const
Expression
&)
const
;
85
Expression
operator-
()
const
;
86
88
static
Expression
symbol
(
const
String
&
symbol
);
89
91
static
Expression
function
(
const
String
& functionName,
const
Array<Expression>
& parameters);
92
102
static
Expression
parse
(String::CharPointerType& stringToParse,
String
& parseError);
103
104
//==============================================================================
108
class
JUCE_API Scope
109
{
110
public
:
111
Scope();
112
virtual
~Scope();
113
115
virtual
String
getScopeUID
()
const
;
116
123
virtual
Expression
getSymbolValue
(
const
String
&
symbol
)
const
;
124
129
virtual
double
evaluateFunction
(
const
String
& functionName,
130
const
double
* parameters,
int
numParameters)
const
;
131
136
class
Visitor
137
{
138
public
:
139
virtual
~Visitor
() =
default
;
140
virtual
void
visit (
const
Scope&) = 0;
141
};
142
150
virtual
void
visitRelativeScope
(
const
String
& scopeName,
Visitor
& visitor)
const
;
151
};
152
159
double
evaluate
()
const
;
160
166
double
evaluate
(
const
Scope
& scope)
const
;
167
171
double
evaluate
(
const
Scope
& scope,
String
& evaluationError)
const
;
172
182
Expression
adjustedToGiveNewResult
(
double
targetValue,
const
Scope
& scope)
const
;
183
185
struct
Symbol
186
{
187
Symbol (
const
String
&
scopeUID
,
const
String
&
symbolName
);
188
bool
operator== (
const
Symbol&)
const
noexcept
;
189
bool
operator!= (
const
Symbol&)
const
noexcept
;
190
191
String
scopeUID
;
192
String
symbolName
;
193
};
194
196
Expression
withRenamedSymbol
(
const
Symbol
& oldSymbol,
const
String
& newName,
const
Scope
& scope)
const
;
197
206
bool
referencesSymbol
(
const
Symbol
&
symbol
,
const
Scope
& scope)
const
;
207
209
bool
usesAnySymbols
()
const
;
210
212
void
findReferencedSymbols
(
Array<Symbol>
& results,
const
Scope
& scope)
const
;
213
214
//==============================================================================
218
enum
Type
219
{
220
constantType,
221
functionType,
222
operatorType,
223
symbolType
224
};
225
227
Type getType() const noexcept;
228
230
String
getSymbolOrFunction() const;
231
235
int
getNumInputs() const;
236
240
Expression
getInput (
int
index) const;
241
242
private:
243
//==============================================================================
244
class Term;
245
struct Helpers;
246
ReferenceCountedObjectPtr
<Term> term;
247
248
explicit
Expression
(Term*);
249
};
250
251
}
// namespace juce
juce::Array
Definition
juce_Array.h:56
juce::Expression::Scope::Visitor
Definition
juce_Expression.h:137
juce::Expression::Scope
Definition
juce_Expression.h:109
juce::Expression::Scope::getSymbolValue
virtual Expression getSymbolValue(const String &symbol) const
Definition
juce_Expression.cpp:1122
juce::Expression::Scope::visitRelativeScope
virtual void visitRelativeScope(const String &scopeName, Visitor &visitor) const
Definition
juce_Expression.cpp:1164
juce::Expression::Scope::getScopeUID
virtual String getScopeUID() const
Definition
juce_Expression.cpp:1169
juce::Expression::Scope::evaluateFunction
virtual double evaluateFunction(const String &functionName, const double *parameters, int numParameters) const
Definition
juce_Expression.cpp:1130
juce::Expression
Definition
juce_Expression.h:44
juce::Expression::adjustedToGiveNewResult
Expression adjustedToGiveNewResult(double targetValue, const Scope &scope) const
Definition
juce_Expression.cpp:1020
juce::Expression::findReferencedSymbols
void findReferencedSymbols(Array< Symbol > &results, const Scope &scope) const
Definition
juce_Expression.cpp:1078
juce::Expression::function
static Expression function(const String &functionName, const Array< Expression > ¶meters)
Definition
juce_Expression.cpp:1015
juce::Expression::Expression
Expression()
Definition
juce_Expression.cpp:926
juce::Expression::usesAnySymbols
bool usesAnySymbols() const
Definition
juce_Expression.cpp:1090
juce::Expression::withRenamedSymbol
Expression withRenamedSymbol(const Symbol &oldSymbol, const String &newName, const Scope &scope) const
Definition
juce_Expression.cpp:1052
juce::Expression::operator-
Expression operator-(const Expression &) const
Definition
juce_Expression.cpp:1009
juce::Expression::evaluate
double evaluate() const
Definition
juce_Expression.cpp:983
juce::Expression::parse
static Expression parse(String::CharPointerType &stringToParse, String &parseError)
Definition
juce_Expression.cpp:975
juce::Expression::referencesSymbol
bool referencesSymbol(const Symbol &symbol, const Scope &scope) const
Definition
juce_Expression.cpp:1064
juce::Expression::symbol
static Expression symbol(const String &symbol)
Definition
juce_Expression.cpp:1013
juce::Expression::Type
Type
Definition
juce_Expression.h:219
juce::Expression::toString
String toString() const
Definition
juce_Expression.cpp:1089
juce::ReferenceCountedObjectPtr
Definition
juce_ReferenceCountedObject.h:247
juce::String
Definition
juce_String.h:53
juce::Expression::Symbol
Definition
juce_Expression.h:186
juce::Expression::Symbol::symbolName
String symbolName
Definition
juce_Expression.h:192
juce::Expression::Symbol::scopeUID
String scopeUID
Definition
juce_Expression.h:191
libopenshot-audio
JuceLibraryCode
modules
juce_core
maths
juce_Expression.h
Generated by
1.18.0