131 std::initializer_list<NamedValueSet::NamedValue> properties,
132 std::initializer_list<ValueTree> subTrees = {});
155 bool operator== (
const ValueTree&)
const noexcept;
161 bool operator!= (
const ValueTree&)
const noexcept;
169 bool isEquivalentTo (
const ValueTree&)
const;
175 bool isValid() const noexcept {
return object !=
nullptr; }
204 bool hasType (
const Identifier& typeName)
const noexcept;
212 const var& getProperty (
const Identifier& name)
const noexcept;
219 var getProperty (
const Identifier& name,
const var& defaultReturnValue)
const;
225 const var* getPropertyPointer (
const Identifier& name)
const noexcept;
232 const var& operator[] (
const Identifier& name)
const noexcept;
244 bool hasProperty (
const Identifier& name)
const noexcept;
256 void removeAllProperties (
UndoManager* undoManager);
261 int getNumProperties()
const noexcept;
269 Identifier getPropertyName (
int index)
const noexcept;
280 bool shouldUpdateSynchronously =
false);
286 int getNumChildren()
const noexcept;
345 void removeChild (
int childIndex,
UndoManager* undoManager);
365 void moveChild (
int currentIndex,
int newIndex,
UndoManager* undoManager);
370 bool isAChildOf (
const ValueTree& possibleParent)
const noexcept;
375 int indexOf (
const ValueTree& child)
const noexcept;
394 ValueTree getSibling (
int delta)
const noexcept;
406 bool operator== (
const Iterator&)
const;
407 bool operator!= (
const Iterator&)
const;
410 using difference_type = std::ptrdiff_t;
414 using iterator_category = std::forward_iterator_tag;
433 std::unique_ptr<XmlElement> createXml()
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;
614 JUCE_DEPRECATED_STATIC (
static const ValueTree invalid;)
618 JUCE_PUBLIC_IN_DLL_BUILD (
class SharedObject)
619 friend class SharedObject;
624 template <
typename ElementComparator>
625 struct ComparatorAdapter
627 ComparatorAdapter (ElementComparator& comp) noexcept : comparator (comp) {}
631 return comparator.compareElements (*first, *second);
635 ElementComparator& comparator;
636 JUCE_DECLARE_NON_COPYABLE (ComparatorAdapter)
643 explicit ValueTree (SharedObject&) noexcept;
void sort(ElementComparator &comparator, UndoManager *undoManager, bool retainOrderOfEquivalentItems)
bool isValid() const noexcept
void sort(ElementComparator &comparator, bool retainOrderOfEquivalentItems=false) noexcept