diff --git a/include/exiv2/value.hpp b/include/exiv2/value.hpp index 65fef873..22005add 100644 --- a/include/exiv2/value.hpp +++ b/include/exiv2/value.hpp @@ -871,6 +871,27 @@ namespace Exiv2 { }; // class XmpArrayValue + /*! + @brief %LangAltValueComparison + + #1058 + https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf + XMP spec chapter B.4 (page 42) the xml:lang qualifier is to be compared case insensitive. + */ + struct LangAltValueComparator { + bool operator() (const std::string& str1, const std::string& str2) const + { + bool result = str1.size() != str2.size(); + for (std::string::const_iterator c1 = str1.begin() + , c2 = str2.begin() + ; result && c1 != str1.end() + ; ++c1, ++c2) { + result = tolower(*c1) != tolower(*c2); + } + return result; + } + }; + /*! @brief %Value type for XMP language alternative properties. @@ -949,7 +970,7 @@ namespace Exiv2 { public: //! Type used to store language alternative arrays. - typedef std::map ValueType; + typedef std::map ValueType; // DATA /*! @brief Map to store the language alternative values. The language