![]() |
cello
JUCE ValueTrees for Humans
|
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
get()
method to value, simplfying accessing the underlying data of a Value
in its correct compile-time type.Object::wasWrapped()
and Object::wasInitialized()
methods.Object::getTypeName()
for convenience.Object::toXmlString()
for convenience.Object::findOne()
method to search for and return a single child tree from an object.returnFirstFound
to Query::search
, used to implement the above.cello::Sync
: Perform thread-safe Object updates using the juce::ValueTreeSynchroniser class. The basic approach is that we rely on a pair of cello::Object
s, each of which is only accessed by a single thread. A separate cello::Sync
object (or pair of them if bidirectional sync is needed) watches for changes and communicates those deltas across the thread boundary where they're applied in a thread-safe manner to the other object/tree.cello::IpcClient
(and related): Connect cello::Objects in separate processes using TCP or Named Pipe-based interprocess communications. This uses a similar approach, but communicates the deltas across process boundaries using the JUCE interprocess communication API.Object
by reference.type
parameter passed to cello::Object
constructors has been changed from juce::Identifier&
to juce::String&
.PropertyUpdateFn
alias moved from the Object
class into the top-level Cello
namespace (defined in the cello_update_source.h
header)Value::onPropertyChange()
to simplify subscribing to value objects that are public; instead of doing e.g. myObject.onPropertyChange (myVal, callback)
you can just call myVal.onPropertyChange(callback)
.cello::Value<T>::Cached
class to store the last updated state of a Value
object to make it usable without requiring a ValueTree lookup and validation each time it's needed.creationType
bug on re-wrapping a ValueTree.Object:getattr
Object::save
now ensures that its file is created before attempting to save.Object::save
returns a juce::Result
instead of bool, and will indicate the reason for a failure in that return value.cello::Query
class and updates to cello::Object
to perform database-like queries and in-place updating of child objects. See the "Database / Query" section of the README document.Original release.