156 bool operator== (
const ValueTree&)
const noexcept;
162 bool operator!= (
const ValueTree&)
const noexcept;
170 bool isEquivalentTo (
const ValueTree&)
const;
176 bool isValid() const noexcept {
return object !=
nullptr; }
205 bool hasType (const
Identifier& typeName) const noexcept;
213 const
var& getProperty (const
Identifier& name) const noexcept;
220 var getProperty (const
Identifier& name, const
var& defaultReturnValue) const;
226 const
var* getPropertyPointer (const
Identifier& name) const noexcept;
233 const
var& operator[] (const
Identifier& name) const noexcept;
245 bool hasProperty (const
Identifier& name) const noexcept;
257 void removeAllProperties (
UndoManager* undoManager);
262 int getNumProperties() const noexcept;
270 Identifier getPropertyName (
int index) const noexcept;
281 bool shouldUpdateSynchronously = false);
287 int getNumChildren() const noexcept;
346 void removeChild (
int childIndex,
UndoManager* undoManager);
366 void moveChild (
int currentIndex,
int newIndex,
UndoManager* undoManager);
371 bool isAChildOf (const
ValueTree& possibleParent) const noexcept;
376 int indexOf (const
ValueTree& child) const noexcept;
395 ValueTree getSibling (
int delta) const noexcept;
407 bool operator== (
const Iterator&)
const;
408 bool operator!= (
const Iterator&)
const;
467 static ValueTree readFromData (
const void* data,
size_t numBytes);
472 static ValueTree readFromGZIPData (
const void* data,
size_t numBytes);
492 virtual void valueTreePropertyChanged (
ValueTree& treeWhosePropertyHasChanged,
501 virtual void valueTreeChildAdded (
ValueTree& parentTree,
511 virtual void valueTreeChildRemoved (
ValueTree& parentTree,
513 int indexFromWhichChildWasRemoved);
522 virtual void valueTreeChildOrderChanged (
ValueTree& parentTreeWhoseChildrenHaveMoved,
523 int oldIndex,
int newIndex);
531 virtual void valueTreeParentChanged (
ValueTree& treeWhoseParentHasChanged);
537 virtual void valueTreeRedirected (
ValueTree& treeWhichHasBeenChanged);
554 void addListener (
Listener* listener);
557 void removeListener (
Listener* listener);
569 void sendPropertyChangeMessage (
const Identifier& property);
593 template <
typename ElementComparator>
594 void sort (ElementComparator& comparator,
UndoManager* undoManager,
bool retainOrderOfEquivalentItems)
596 if (
object !=
nullptr)
599 createListOfChildren (sortedList);
600 ComparatorAdapter<ElementComparator> adapter (comparator);
601 sortedList.
sort (adapter, retainOrderOfEquivalentItems);
602 reorderChildren (sortedList, undoManager);
609 int getReferenceCount() const noexcept;
611 #if JUCE_ALLOW_STATIC_NULL_VARIABLES && ! defined (DOXYGEN)
613 [[deprecated (
"If you need an empty ValueTree object, just use ValueTree() or {}.")]]
619 friend class SharedObject;
624 template <
typename ElementComparator>
625 struct ComparatorAdapter
627 ComparatorAdapter (ElementComparator& comp) noexcept : comparator (comp) {}
629 int compareElements (
const ValueTree*
const first,
const ValueTree*
const second)
631 return comparator.compareElements (*first, *second);
635 ElementComparator& comparator;
639 void createListOfChildren (OwnedArray<ValueTree>&)
const;
640 void reorderChildren (
const OwnedArray<ValueTree>&, UndoManager*);
642 explicit ValueTree (ReferenceCountedObjectPtr<SharedObject>)
noexcept;
643 explicit ValueTree (SharedObject&)
noexcept;
Represents a string identifier, designed for accessing properties by name.
Holds a set of objects and can invoke a member function callback on each object in the set with a sin...
The base class for streams that write data to some kind of destination.
An array designed for holding objects.
void sort(ElementComparator &comparator, bool retainOrderOfEquivalentItems=false) noexcept
Sorts the elements in the array.
A smart-pointer class which points to a reference-counted object.
Manages a list of undo/redo commands.
Listener class for events that happen to a ValueTree.
virtual ~Listener()=default
Destructor.
A powerful tree structure that can be used to hold free-form data, and which can handle its own undo ...
bool isValid() const noexcept
Returns true if this tree refers to some valid data.
void sort(ElementComparator &comparator, UndoManager *undoManager, bool retainOrderOfEquivalentItems)
This method uses a comparator object to sort the tree's children into order.
Represents a shared variant value.
Used to build a tree of elements representing an XML document.
A variant class, that can be used to hold a range of primitive values.
const DirectoryEntry & operator*(const DirectoryEntry &e) noexcept
A convenience operator so that the expression *it++ works correctly when it is an instance of RangedD...
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...
Iterator for a ValueTree.