JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_Expression.h
Go to the documentation of this file.
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//==============================================================================
43class JUCE_API Expression
44{
45public:
46 //==============================================================================
48 Expression();
49
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
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
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
Holds a resizable array of primitive or copy-by-value objects.
Definition juce_Array.h:56
Wraps a pointer to a null-terminated UTF-8 character string, and provides various methods to operate ...
Used as a callback by the Scope::visitRelativeScope() method.
When evaluating an Expression object, this class is used to resolve symbols and perform functions tha...
A class for dynamically evaluating simple numeric expressions.
Type
Expression type.
A smart-pointer class which points to a reference-counted object.
The JUCE String class!
Definition juce_String.h:53
JUCE Namespace.
JUCE_API RelativeTime JUCE_CALLTYPE operator-(RelativeTime t1, RelativeTime t2) noexcept
Subtracts two RelativeTimes.
Represents a symbol that is used in an Expression.
String symbolName
The name of the symbol.
String scopeUID
The unique ID of the Scope that contains this symbol.