30Value::ValueSource::ValueSource()
34Value::ValueSource::~ValueSource()
36 cancelPendingUpdate();
39void Value::ValueSource::handleAsyncUpdate()
41 sendChangeMessage (
true);
54 cancelPendingUpdate();
57 if (
Value*
const v = valuesWithListeners[i])
80 var getValue()
const override
85 void setValue (
const var& newValue)
override
87 if (! newValue.equalsWithSameType (value))
90 sendChangeMessage (
false);
97 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SimpleValueSource)
108 jassert (v !=
nullptr);
125 other.removeFromListenerList();
126 value = std::move (
other.value);
135 other.removeFromListenerList();
136 value = std::move (
other.value);
142 removeFromListenerList();
145void Value::removeFromListenerList()
147 if (listeners.
size() > 0 && value !=
nullptr)
148 value->valuesWithListeners.removeValue (
this);
154 return value->getValue();
157Value::operator
var()
const
159 return value->getValue();
164 value->setValue (newValue);
169 return value->getValue().toString();
174 value->setValue (newValue);
182 if (listeners.
size() > 0)
184 value->valuesWithListeners.removeValue (
this);
195 return value ==
other.value;
200 return value ==
other.value || value->getValue() ==
other.getValue();
205 return value !=
other.value && value->getValue() !=
other.getValue();
211 if (listener !=
nullptr)
213 if (listeners.
size() == 0)
214 value->valuesWithListeners.
add (
this);
216 listeners.
add (listener);
222 listeners.
remove (listener);
224 if (listeners.
size() == 0)
225 value->valuesWithListeners.removeValue (
this);
228void Value::callListeners()
230 if (listeners.
size() > 0)
237OutputStream& JUCE_CALLTYPE operator<< (OutputStream& stream,
const Value& value)
239 return stream << value.toString();
int size() const noexcept
void remove(int indexToRemove)
void add(const ElementType &newElement)
void sendChangeMessage(bool dispatchSynchronously)
bool operator==(const Value &other) const
void setValue(const var &newValue)
void addListener(Listener *listener)
void removeListener(Listener *listener)
bool refersToSameSourceAs(const Value &other) const
Value & operator=(const var &newValue)
void referTo(const Value &valueToReferTo)
bool operator!=(const Value &other) const