This class acts as a typed wrapper around a property inside a ValueTree. More...
#include <juce_CachedValue.h>
Public Member Functions | |
CachedValue () | |
Default constructor. More... | |
CachedValue (ValueTree &tree, const Identifier &propertyID, UndoManager *undoManager) | |
Constructor. More... | |
CachedValue (ValueTree &tree, const Identifier &propertyID, UndoManager *undoManager, const Type &defaultToUse) | |
Constructor. More... | |
void | forceUpdateOfCachedValue () |
Force an update in case the referenced property has been changed from elsewhere. More... | |
Type | get () const noexcept |
Returns the current value of the property. More... | |
Type | getDefault () const |
Returns the current fallback default value. More... | |
Value | getPropertyAsValue () |
Returns the current property as a Value object. More... | |
const Identifier & | getPropertyID () const noexcept |
Returns the property ID of the referenced property. More... | |
UndoManager * | getUndoManager () noexcept |
Returns the UndoManager that is being used. More... | |
ValueTree & | getValueTree () noexcept |
Returns a reference to the ValueTree containing the referenced property. More... | |
bool | isUsingDefault () const |
Returns true if the current property does not exist and the CachedValue is using the fallback default value instead. More... | |
operator Type () const noexcept | |
Returns the current value of the property. More... | |
template<typename OtherType > | |
bool | operator!= (const OtherType &other) const |
Returns true if the current value of the property (or the fallback value) is not equal to other. More... | |
Type & | operator* () noexcept |
Dereference operator. More... | |
Type * | operator-> () noexcept |
Dereference operator. More... | |
CachedValue & | operator= (const Type &newValue) |
Sets the property. More... | |
template<typename OtherType > | |
bool | operator== (const OtherType &other) const |
Returns true if the current value of the property (or the fallback value) is equal to other. More... | |
void | referTo (ValueTree &tree, const Identifier &property, UndoManager *um) |
Makes the CachedValue refer to the specified property inside the given ValueTree. More... | |
void | referTo (ValueTree &tree, const Identifier &property, UndoManager *um, const Type &defaultVal) |
Makes the CachedValue refer to the specified property inside the given ValueTree, and specifies a fallback value to use if the property does not exist. More... | |
void | resetToDefault () |
Removes the property from the referenced ValueTree and makes the CachedValue return the fallback default value instead. More... | |
void | resetToDefault (UndoManager *undoManagerToUse) |
Removes the property from the referenced ValueTree and makes the CachedValue return the fallback default value instead. More... | |
void | setDefault (const Type &value) |
Resets the fallback default value. More... | |
void | setValue (const Type &newValue, UndoManager *undoManagerToUse) |
Sets the property. More... | |
Private Member Functions | |
Type | getTypedValue () const |
void | referToWithDefault (ValueTree &, const Identifier &, UndoManager *, const Type &) |
virtual void | valueTreeChildAdded (ValueTree &parentTree, ValueTree &childWhichHasBeenAdded) |
This method is called when a child sub-tree is added. More... | |
virtual void | valueTreeChildOrderChanged (ValueTree &parentTreeWhoseChildrenHaveMoved, int oldIndex, int newIndex) |
This method is called when a tree's children have been re-shuffled. More... | |
virtual void | valueTreeChildRemoved (ValueTree &parentTree, ValueTree &childWhichHasBeenRemoved, int indexFromWhichChildWasRemoved) |
This method is called when a child sub-tree is removed. More... | |
virtual void | valueTreeParentChanged (ValueTree &treeWhoseParentHasChanged) |
This method is called when a tree has been added or removed from a parent. More... | |
void | valueTreePropertyChanged (ValueTree &changedTree, const Identifier &changedProperty) override |
This method is called when a property of this tree (or of one of its sub-trees) is changed. More... | |
virtual void | valueTreeRedirected (ValueTree &treeWhichHasBeenChanged) |
This method is called when a tree is made to point to a different internal shared object. More... | |
Private Attributes | |
Type | cachedValue |
Type | defaultValue |
Identifier | targetProperty |
ValueTree | targetTree |
UndoManager * | undoManager = nullptr |
This class acts as a typed wrapper around a property inside a ValueTree.
A CachedValue provides an easy way to read and write a ValueTree property with a chosen type. So for example a CachedValue<int> allows you to read or write the property as an int, and a CachedValue<String> lets you work with it as a String.
It also allows efficient access to the value, by caching a copy of it in the type that is being used.
You can give the CachedValue an optional UndoManager which it will use when writing to the underlying ValueTree.
If the property inside the ValueTree is missing, the CachedValue will automatically return an optional default value, which can be specified when initialising the CachedValue.
To create one, you can either use the constructor to attach the CachedValue to a ValueTree, or can create an uninitialised CachedValue with its default constructor and then attach it later with the referTo() methods.
Common types like String, int, double which can be easily converted to a var should work out-of-the-box, but if you want to use more complex custom types, you may need to implement some template specialisations of VariantConverter which this class uses to convert between the type and the ValueTree's internal var.
@tags{DataStructures}
|
inlinedefault |
Default constructor.
Creates a default CachedValue not referring to any property. To initialise the object, call one of the referTo() methods.
|
inline |
Constructor.
Creates a CachedValue referring to a Value property inside a ValueTree. If you use this constructor, the fallback value will be a default-constructed instance of Type.
tree | The ValueTree containing the property |
propertyID | The identifier of the property |
undoManager | The UndoManager to use when writing to the property |
References juce::ValueTree::addListener(), and juce::CachedValue< Type >::targetTree.
|
inline |
Constructor.
Creates a default Cached Value referring to a Value property inside a ValueTree, and specifies a fallback value to use if the property does not exist.
tree | The ValueTree containing the property |
propertyID | The identifier of the property |
undoManager | The UndoManager to use when writing to the property |
defaultToUse | The fallback default value to use. |
References juce::ValueTree::addListener(), and juce::CachedValue< Type >::targetTree.
|
inline |
Force an update in case the referenced property has been changed from elsewhere.
Note: The CachedValue is a ValueTree::Listener and therefore will be informed of changes of the referenced property anyway (and update itself). But this may happen asynchronously. forceUpdateOfCachedValue() forces an update immediately.
|
inlinenoexcept |
Returns the current value of the property.
If the property does not exist, returns the fallback default value.
References juce::CachedValue< Type >::cachedValue.
|
inline |
Returns the current fallback default value.
References juce::CachedValue< Type >::defaultValue.
|
inline |
Returns the current property as a Value object.
|
inlinenoexcept |
Returns the property ID of the referenced property.
References juce::CachedValue< Type >::targetProperty.
|
inlineprivate |
References juce::VariantConverter< Type >::fromVar().
|
inlinenoexcept |
Returns the UndoManager that is being used.
References juce::CachedValue< Type >::undoManager.
|
inlinenoexcept |
Returns a reference to the ValueTree containing the referenced property.
References juce::CachedValue< Type >::targetTree.
|
inline |
Returns true if the current property does not exist and the CachedValue is using the fallback default value instead.
|
inlinenoexcept |
Returns the current value of the property.
If the property does not exist, returns the fallback default value.
This is the same as calling get().
References juce::CachedValue< Type >::cachedValue.
|
inline |
Returns true if the current value of the property (or the fallback value) is not equal to other.
References juce::CachedValue< Type >::cachedValue.
|
inlinenoexcept |
Dereference operator.
Provides direct access to the property.
References juce::CachedValue< Type >::cachedValue.
|
inlinenoexcept |
Dereference operator.
Provides direct access to members of the property if it is of object type.
References juce::CachedValue< Type >::cachedValue.
|
inline |
Sets the property.
This will actually modify the property in the referenced ValueTree.
|
inline |
Returns true if the current value of the property (or the fallback value) is equal to other.
References juce::CachedValue< Type >::cachedValue.
|
inline |
Makes the CachedValue refer to the specified property inside the given ValueTree.
References juce::gl::v.
|
inline |
Makes the CachedValue refer to the specified property inside the given ValueTree, and specifies a fallback value to use if the property does not exist.
References juce::gl::v.
|
inlineprivate |
References juce::gl::v.
|
inline |
Removes the property from the referenced ValueTree and makes the CachedValue return the fallback default value instead.
|
inline |
Removes the property from the referenced ValueTree and makes the CachedValue return the fallback default value instead.
|
inline |
Resets the fallback default value.
References juce::CachedValue< Type >::defaultValue, and juce::gl::value.
|
inline |
Sets the property.
This will actually modify the property in the referenced ValueTree.
|
virtualinherited |
This method is called when a child sub-tree is added.
Note that when you register a listener to a tree, it will receive this callback for child changes in both that tree and any of its children, (recursively, at any depth). If your tree has sub-trees but you only want to know about changes to the top level tree, just check the parentTree parameter to make sure it's the one that you're interested in.
Reimplemented in juce::AudioProcessorValueTreeState, juce::ComponentBuilder, and juce::ValueTreeSynchroniser.
|
virtualinherited |
This method is called when a tree's children have been re-shuffled.
Note that when you register a listener to a tree, it will receive this callback for child changes in both that tree and any of its children, (recursively, at any depth). If your tree has sub-trees but you only want to know about changes to the top level tree, just check the parameter to make sure it's the tree that you're interested in.
Reimplemented in juce::ComponentBuilder, and juce::ValueTreeSynchroniser.
|
virtualinherited |
This method is called when a child sub-tree is removed.
Note that when you register a listener to a tree, it will receive this callback for child changes in both that tree and any of its children, (recursively, at any depth). If your tree has sub-trees but you only want to know about changes to the top level tree, just check the parentTree parameter to make sure it's the one that you're interested in.
Reimplemented in juce::ComponentBuilder, and juce::ValueTreeSynchroniser.
|
virtualinherited |
This method is called when a tree has been added or removed from a parent.
This callback happens when the tree to which the listener was registered is added or removed from a parent. Unlike the other callbacks, it applies only to the tree to which the listener is registered, and not to any of its children.
Reimplemented in juce::ComponentBuilder.
|
inlineoverrideprivatevirtual |
This method is called when a property of this tree (or of one of its sub-trees) is changed.
Note that when you register a listener to a tree, it will receive this callback for property changes in that tree, and also for any of its children, (recursively, at any depth). If your tree has sub-trees but you only want to know about changes to the top level tree, simply check the tree parameter in this callback to make sure it's the tree you're interested in.
Reimplemented from juce::ValueTree::Listener.
|
virtualinherited |
This method is called when a tree is made to point to a different internal shared object.
When operator= is used to make a ValueTree refer to a different object, this callback will be made.
Reimplemented in juce::AudioProcessorValueTreeState.
|
private |
|
private |
Referenced by juce::CachedValue< Type >::getDefault(), and juce::CachedValue< Type >::setDefault().
|
private |
Referenced by juce::CachedValue< Type >::getPropertyID().
|
private |
Referenced by juce::CachedValue< Type >::CachedValue(), and juce::CachedValue< Type >::getValueTree().
|
private |
Referenced by juce::CachedValue< Type >::getUndoManager().