123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- /*
- ==============================================================================
- This file is part of the juce_core module of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
- 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.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
- TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
- NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- ------------------------------------------------------------------------------
- NOTE! This permissive ISC license applies ONLY to files within the juce_core module!
- All other JUCE modules are covered by a dual GPL/commercial license, so if you are
- using any other modules, be sure to check that you also comply with their license.
- For more details, visit www.juce.com
- ==============================================================================
- */
- #ifndef JUCE_NAMEDVALUESET_H_INCLUDED
- #define JUCE_NAMEDVALUESET_H_INCLUDED
- //==============================================================================
- /** 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.
- */
- class JUCE_API NamedValueSet
- {
- public:
- /** Creates an empty set. */
- NamedValueSet() noexcept;
- /** Creates a copy of another set. */
- NamedValueSet (const NamedValueSet&);
- /** Replaces this set with a copy of another set. */
- NamedValueSet& operator= (const NamedValueSet&);
- #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
- NamedValueSet (NamedValueSet&&) noexcept;
- NamedValueSet& operator= (NamedValueSet&&) noexcept;
- #endif
- /** Destructor. */
- ~NamedValueSet();
- bool operator== (const NamedValueSet&) const;
- bool operator!= (const NamedValueSet&) const;
- //==============================================================================
- /** Returns the total number of values that the set contains. */
- int size() const noexcept;
- /** Returns the value of a named item.
- If the name isn't found, this will return a void variant.
- @see getProperty
- */
- const var& operator[] (const Identifier& name) const;
- /** 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 (Identifier name, const var& newValue);
- #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
- /** 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 (Identifier name, var&& newValue);
- #endif
- /** Returns true if the set contains an item with the specified name. */
- bool contains (const Identifier& name) const;
- /** 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().
- */
- 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
- */
- 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:
- //==============================================================================
- struct NamedValue;
- Array<NamedValue> values;
- };
- #endif // JUCE_NAMEDVALUESET_H_INCLUDED
|