diff --git a/fieldbasedtag.h b/fieldbasedtag.h index b8be4c7..b25e666 100644 --- a/fieldbasedtag.h +++ b/fieldbasedtag.h @@ -5,7 +5,6 @@ #include #include -#include namespace Media { @@ -30,12 +29,12 @@ public: virtual const TagValue &value(const typename FieldType::identifierType &id) const; const TagValue &value(KnownField field) const; - std::list values(const typename FieldType::identifierType &id) const; - std::list values(KnownField field) const; + std::vector values(const typename FieldType::identifierType &id) const; + std::vector values(KnownField field) const; virtual bool setValue(const typename FieldType::identifierType &id, const TagValue &value); bool setValue(KnownField field, const TagValue &value); - bool setValues(const typename FieldType::identifierType &id, std::initializer_list values); - bool setValues(KnownField field, std::initializer_list values); + bool setValues(const typename FieldType::identifierType &id, const std::vector &values); + bool setValues(KnownField field, const std::vector &values); bool hasField(KnownField field) const; virtual bool hasField(const typename FieldType::identifierType &id) const; void removeAllFields(); @@ -99,10 +98,10 @@ inline const TagValue &FieldMapBasedTag::value(KnownField fi * \sa Tag::values() */ template -inline std::list FieldMapBasedTag::values(const typename FieldType::identifierType &id) const +inline std::vector FieldMapBasedTag::values(const typename FieldType::identifierType &id) const { auto range = m_fields.equal_range(id); - std::list values; + std::vector values; for(auto i = range.first; i != range.second; ++i) { if(!i->second.value().isEmpty()) { values.push_back(&i->second.value()); @@ -112,7 +111,7 @@ inline std::list FieldMapBasedTag::values( } template -inline std::list FieldMapBasedTag::values(KnownField field) const +inline std::vector FieldMapBasedTag::values(KnownField field) const { return values(fieldId(field)); } @@ -146,7 +145,7 @@ bool FieldMapBasedTag::setValue(const typename FieldType::id * \sa Tag::setValues() */ template -bool FieldMapBasedTag::setValues(const typename FieldType::identifierType &id, std::initializer_list values) +bool FieldMapBasedTag::setValues(const typename FieldType::identifierType &id, const std::vector &values) { auto valuesIterator = values.begin(); auto range = m_fields.equal_range(id); @@ -171,7 +170,7 @@ bool FieldMapBasedTag::setValues(const typename FieldType::i * method will replace all currently assigned values with the specified \a values. */ template -bool FieldMapBasedTag::setValues(KnownField field, std::initializer_list values) +bool FieldMapBasedTag::setValues(KnownField field, const std::vector &values) { return setValues(fieldId(field), values); } diff --git a/tag.cpp b/tag.cpp index deda380..c9f6b59 100644 --- a/tag.cpp +++ b/tag.cpp @@ -50,9 +50,9 @@ string Tag::toString() const * - However, the default implementation just returns the first value assuming * multiple values per field are not supported by the tag. */ -std::list Tag::values(KnownField field) const +std::vector Tag::values(KnownField field) const { - std::list values; + std::vector values; const TagValue &v = value(field); if(!v.isEmpty()) { values.push_back(&v); @@ -68,7 +68,7 @@ std::list Tag::values(KnownField field) const * - However, the default implementation just sets the first value and discards additional values assuming * multiple values per field are not supported by the tag. */ -bool Tag::setValues(KnownField field, std::initializer_list values) +bool Tag::setValues(KnownField field, const std::vector &values) { return setValue(field, values.size() ? *values.begin() : TagValue()); } diff --git a/tag.h b/tag.h index a73e0e2..a18e140 100644 --- a/tag.h +++ b/tag.h @@ -107,9 +107,9 @@ public: virtual TagTextEncoding proposedTextEncoding() const; virtual bool canEncodingBeUsed(TagTextEncoding encoding) const; virtual const TagValue &value(KnownField field) const = 0; - virtual std::list values(KnownField field) const; + virtual std::vector values(KnownField field) const; virtual bool setValue(KnownField field, const TagValue &value) = 0; - virtual bool setValues(KnownField field, std::initializer_list values); + virtual bool setValues(KnownField field, const std::vector &values); virtual bool hasField(KnownField field) const = 0; virtual void removeAllFields() = 0; const std::string &version() const;