LMMS
Loading...
Searching...
No Matches
juce_Value.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 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
51{
52public:
53 //==============================================================================
55 Value();
56
63 Value (const Value& other);
64
66 explicit Value (const var& initialValue);
67
69 Value (Value&&) noexcept;
70
72 ~Value();
73
74 //==============================================================================
76 var getValue() const;
77
79 operator var() const;
80
84 String toString() const;
85
93 void setValue (const var& newValue);
94
102 Value& operator= (const var& newValue);
103
105 Value& operator= (Value&&) noexcept;
106
115 void referTo (const Value& valueToReferTo);
116
120 bool refersToSameSourceAs (const Value& other) const;
121
126 bool operator== (const Value& other) const;
127
132 bool operator!= (const Value& other) const;
133
134 //==============================================================================
139 {
140 public:
141 Listener() = default;
142 virtual ~Listener() = default;
143
150 virtual void valueChanged (Value& value) = 0;
151 };
152
164 void addListener (Listener* listener);
165
167 void removeListener (Listener* listener);
168
169
170 //==============================================================================
179 private AsyncUpdater
180 {
181 public:
182 ValueSource();
183 ~ValueSource() override;
184
186 virtual var getValue() const = 0;
187
191 virtual void setValue (const var& newValue) = 0;
192
199 void sendChangeMessage (bool dispatchSynchronously);
200
201 protected:
202 //==============================================================================
203 friend class Value;
205
206 private:
207 void handleAsyncUpdate() override;
208
210 };
211
212
213 //==============================================================================
215 explicit Value (ValueSource* valueSource);
216
219
220
221private:
222 //==============================================================================
223 friend class ValueSource;
226
227 void callListeners();
229
230 // This is disallowed to avoid confusion about whether it should
231 // do a by-value or by-reference copy.
232 Value& operator= (const Value&) = delete;
233
234 // This declaration prevents accidental construction from an integer of 0,
235 // which is possible in some compilers via an implicit cast to a pointer.
236 explicit Value (void*) = delete;
237};
238
241
242
243} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
ostream & operator<<(ostream &out, const MidiEvent &ev)
Definition InMgr.cpp:9
AsyncUpdater()
Definition juce_AsyncUpdater.cpp:44
Definition juce_ListenerList.h:70
Definition juce_OutputStream.h:38
Definition juce_ReferenceCountedObject.h:247
Definition juce_SortedSet.h:54
Definition juce_String.h:53
Definition juce_Value.h:139
virtual ~Listener()=default
virtual void valueChanged(Value &value)=0
Definition juce_Value.h:180
virtual var getValue() const =0
void handleAsyncUpdate() override
Definition juce_Value.cpp:38
SortedSet< Value * > valuesWithListeners
Definition juce_Value.h:204
void sendChangeMessage(bool dispatchSynchronously)
Definition juce_Value.cpp:43
virtual void setValue(const var &newValue)=0
ValueSource()
Definition juce_Value.cpp:29
friend class Value
Definition juce_Value.h:203
Definition juce_Value.h:51
ListenerList< Listener > listeners
Definition juce_Value.h:225
void setValue(const var &newValue)
Definition juce_Value.cpp:161
void removeFromListenerList()
Definition juce_Value.cpp:144
void addListener(Listener *listener)
Definition juce_Value.cpp:208
void removeListener(Listener *listener)
Definition juce_Value.cpp:219
bool refersToSameSourceAs(const Value &other) const
Definition juce_Value.cpp:192
ValueSource & getValueSource() noexcept
Definition juce_Value.h:218
void callListeners()
Definition juce_Value.cpp:227
ReferenceCountedObjectPtr< ValueSource > value
Definition juce_Value.h:224
Value(void *)=delete
void referTo(const Value &valueToReferTo)
Definition juce_Value.cpp:177
Value()
Definition juce_Value.cpp:101
var getValue() const
Definition juce_Value.cpp:151
String toString() const
Definition juce_Value.cpp:166
Definition juce_Variant.h:42
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_CALLTYPE
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31