OpenShot Audio Library | OpenShotAudio: juce_Expression.h Source File

OpenShot Audio Library | OpenShotAudio 1.0.0

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
23namespace juce
24{
25
26//==============================================================================
43 class JUCE_API Expression
44{
45public:
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
242private:
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 > &parameters)
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