26 NamedValueSet::NamedValue::NamedValue() noexcept {}
27 NamedValueSet::NamedValue::~NamedValue() noexcept {}
29 NamedValueSet::NamedValue::NamedValue (
const Identifier& n,
const var& v) : name (n), value (v) {}
30 NamedValueSet::NamedValue::NamedValue (
const NamedValue& other) : NamedValue (other.name, other.value) {}
32 NamedValueSet::NamedValue::NamedValue (NamedValue&& other) noexcept
33 : NamedValue (std::move (other.name),
34 std::move (other.value))
37 NamedValueSet::NamedValue::NamedValue (
const Identifier& n, var&& v) noexcept
38 : name (n), value (std::move (v))
42 NamedValueSet::NamedValue::NamedValue (Identifier&& n, var&& v) noexcept
43 : name (std::move (n)),
47 NamedValueSet::NamedValue& NamedValueSet::NamedValue::operator= (NamedValue&& other) noexcept
49 name = std::move (other.name);
50 value = std::move (other.value);
54 bool NamedValueSet::NamedValue::operator== (
const NamedValue& other)
const noexcept {
return name == other.name && value == other.value; }
55 bool NamedValueSet::NamedValue::operator!= (
const NamedValue& other)
const noexcept {
return ! operator== (other); }
64 : values (std::move (other.values)) {}
67 : values (
std::move (list))
74 values = other.values;
80 other.values.swapWith (values);
91 auto num = values.size();
93 if (num != other.values.size())
96 for (
int i = 0; i < num; ++i)
99 if (values.getReference(i).name == other.values.getReference(i).name)
101 if (values.getReference(i).value != other.values.getReference(i).value)
107 for (
int j = i; j < num; ++j)
109 if (
auto* otherVal = other.
getVarPointer (values.getReference(j).name))
110 if (values.getReference(j).value == *otherVal)
128 static const var& getNullVarRef() noexcept
139 return getNullVarRef();
147 return defaultReturnValue;
152 for (
auto& i : values)
161 for (
auto& i : values)
172 if (v->equalsWithSameType (newValue))
175 *v = std::move (newValue);
179 values.add ({ name, std::move (newValue) });
187 if (v->equalsWithSameType (newValue))
194 values.add ({ name, newValue });
205 auto numValues = values.size();
207 for (
int i = 0; i < numValues; ++i)
208 if (values.getReference(i).name == name)
216 auto numValues = values.size();
218 for (
int i = 0; i < numValues; ++i)
220 if (values.getReference(i).name == name)
232 if (isPositiveAndBelow (index, values.size()))
233 return values.getReference (index).name;
241 if (isPositiveAndBelow (index, values.size()))
242 return values.getReference (index).value;
245 return getNullVarRef();
250 if (isPositiveAndBelow (index, values.size()))
251 return &(values.getReference (index).value);
258 if (isPositiveAndBelow (index, values.size()))
259 return &(values.getReference (index).value);
268 for (
auto* att = xml.attributes.
get(); att !=
nullptr; att = att->nextListItem)
270 if (att->name.toString().startsWith (
"base64:"))
276 values.add ({ att->name.toString().substring (7),
var (mb) });
281 values.add ({ att->name,
var (att->value) });
287 for (
auto& i : values)
289 if (
auto* mb = i.value.getBinaryData())
291 xml.
setAttribute (
"base64:" + i.name.toString(), mb->toBase64Encoding());
296 jassert (! i.value.isObject());
297 jassert (! i.value.isMethod());
298 jassert (! i.value.isArray());
var * getVarPointer(const Identifier &name) noexcept
void copyToXmlAttributes(XmlElement &xml) const
int size() const noexcept
int indexOf(const Identifier &name) const noexcept
var * getVarPointerAt(int index) noexcept
ObjectType * get() const noexcept
bool isEmpty() const noexcept
void setAttribute(const Identifier &attributeName, const String &newValue)
void setFromXmlAttributes(const XmlElement &xml)
bool operator==(const NamedValueSet &) const noexcept
bool contains(const Identifier &name) const noexcept
~NamedValueSet() noexcept
const var & getValueAt(int index) const noexcept
bool fromBase64Encoding(StringRef encodedString)
Identifier getName(int index) const noexcept
bool set(const Identifier &name, const var &newValue)
const var & operator[](const Identifier &name) const noexcept
var getWithDefault(const Identifier &name, const var &defaultReturnValue) const
bool remove(const Identifier &name)