| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2020 - Raw Material Software Limited
 - 
 -    JUCE is an open source library subject to commercial or open-source
 -    licensing.
 - 
 -    The code included in this file is provided under the terms of the ISC license
 -    http://www.isc.org/downloads/software-support-policy/isc-license. Permission
 -    To use, copy, modify, and/or distribute this software for any purpose with or
 -    without fee is hereby granted provided that the above copyright notice and
 -    this permission notice appear in all copies.
 - 
 -    JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
 -    EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
 -    DISCLAIMED.
 - 
 -   ==============================================================================
 - */
 - 
 - namespace juce
 - {
 - 
 - //==============================================================================
 - /** Holds a set of named var objects.
 - 
 -     This can be used as a basic structure to hold a set of var object, which can
 -     be retrieved by using their identifier.
 - 
 -     @tags{Core}
 - */
 - class JUCE_API  NamedValueSet
 - {
 - public:
 -     //==============================================================================
 -     /** Structure for a named var object */
 -     struct JUCE_API  NamedValue
 -     {
 -         NamedValue() noexcept;
 -         ~NamedValue() noexcept;
 - 
 -         NamedValue (const Identifier& name, const var& value);
 -         NamedValue (const Identifier& name, var&& value) noexcept;
 -         NamedValue (Identifier&& name, var&& value) noexcept;
 - 
 -         NamedValue (const NamedValue&);
 -         NamedValue (NamedValue&&) noexcept;
 -         NamedValue& operator= (NamedValue&&) noexcept;
 - 
 -         bool operator== (const NamedValue&) const noexcept;
 -         bool operator!= (const NamedValue&) const noexcept;
 - 
 -         Identifier name;
 -         var value;
 -     };
 - 
 -     //==============================================================================
 -     /** Creates an empty set. */
 -     NamedValueSet() noexcept;
 - 
 -     NamedValueSet (const NamedValueSet&);
 -     NamedValueSet (NamedValueSet&&) noexcept;
 -     NamedValueSet& operator= (const NamedValueSet&);
 -     NamedValueSet& operator= (NamedValueSet&&) noexcept;
 - 
 -     /** Creates a NamedValueSet from a list of names and properties. */
 -     NamedValueSet (std::initializer_list<NamedValue>);
 - 
 -     /** Destructor. */
 -     ~NamedValueSet() noexcept;
 - 
 -     /** Two NamedValueSets are considered equal if they contain all the same key/value
 -         pairs, regardless of the order.
 -     */
 -     bool operator== (const NamedValueSet&) const noexcept;
 -     bool operator!= (const NamedValueSet&) const noexcept;
 - 
 -     const NamedValueSet::NamedValue* begin() const noexcept     { return values.begin(); }
 -     const NamedValueSet::NamedValue* end() const noexcept       { return values.end();   }
 - 
 -     //==============================================================================
 -     /** Returns the total number of values that the set contains. */
 -     int size() const noexcept;
 - 
 -     /** Returns true if the set is empty. */
 -     bool isEmpty() const noexcept;
 - 
 -     /** Returns the value of a named item.
 -         If the name isn't found, this will return a void variant.
 -     */
 -     const var& operator[] (const Identifier& name) const noexcept;
 - 
 -     /** Tries to return the named value, but if no such value is found, this will
 -         instead return the supplied default value.
 -     */
 -     var getWithDefault (const Identifier& name, const var& defaultReturnValue) const;
 - 
 -     /** Changes or adds a named value.
 -         @returns    true if a value was changed or added; false if the
 -                     value was already set the value passed-in.
 -     */
 -     bool set (const Identifier& name, const var& newValue);
 - 
 -     /** Changes or adds a named value.
 -         @returns    true if a value was changed or added; false if the
 -                     value was already set the value passed-in.
 -     */
 -     bool set (const Identifier& name, var&& newValue);
 - 
 -     /** Returns true if the set contains an item with the specified name. */
 -     bool contains (const Identifier& name) const noexcept;
 - 
 -     /** Removes a value from the set.
 -         @returns    true if a value was removed; false if there was no value
 -                     with the name that was given.
 -     */
 -     bool remove (const Identifier& name);
 - 
 -     /** Returns the name of the value at a given index.
 -         The index must be between 0 and size() - 1.
 -     */
 -     Identifier getName (int index) const noexcept;
 - 
 -     /** Returns a pointer to the var that holds a named value, or null if there is
 -         no value with this name.
 - 
 -         Do not use this method unless you really need access to the internal var object
 -         for some reason - for normal reading and writing always prefer operator[]() and set().
 -         Also note that the pointer returned may become invalid as soon as any subsequent
 -         methods are called on the NamedValueSet.
 -     */
 -     var* getVarPointer (const Identifier& name) noexcept;
 - 
 -     /** Returns a pointer to the var that holds a named value, or null if there is
 -         no value with this name.
 - 
 -         Do not use this method unless you really need access to the internal var object
 -         for some reason - for normal reading and writing always prefer operator[]() and set().
 -         Also note that the pointer returned may become invalid as soon as any subsequent
 -         methods are called on the NamedValueSet.
 -     */
 -     const var* getVarPointer (const Identifier& name) const noexcept;
 - 
 -     /** Returns the value of the item at a given index.
 -         The index must be between 0 and size() - 1.
 -     */
 -     const var& getValueAt (int index) const noexcept;
 - 
 -     /** Returns the value of the item at a given index.
 -         The index must be between 0 and size() - 1, or this will return a nullptr
 -         Also note that the pointer returned may become invalid as soon as any subsequent
 -         methods are called on the NamedValueSet.
 -     */
 -     var* getVarPointerAt (int index) noexcept;
 - 
 -     /** Returns the value of the item at a given index.
 -         The index must be between 0 and size() - 1, or this will return a nullptr
 -         Also note that the pointer returned may become invalid as soon as any subsequent
 -         methods are called on the NamedValueSet.
 -     */
 -     const var* getVarPointerAt (int index) const noexcept;
 - 
 -     /** Returns the index of the given name, or -1 if it's not found. */
 -     int indexOf (const Identifier& name) const noexcept;
 - 
 -     /** Removes all values. */
 -     void clear();
 - 
 -     //==============================================================================
 -     /** Sets properties to the values of all of an XML element's attributes. */
 -     void setFromXmlAttributes (const XmlElement& xml);
 - 
 -     /** Sets attributes in an XML element corresponding to each of this object's
 -         properties.
 -     */
 -     void copyToXmlAttributes (XmlElement& xml) const;
 - 
 - private:
 -     //==============================================================================
 -     Array<NamedValue> values;
 - };
 - 
 - } // namespace juce
 
 
  |