From 50bf5690f931b09a9a55de5d685634e8caa5fcf6 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Mon, 15 Dec 2014 18:23:13 +0000 Subject: [PATCH] refs #356 Moved CPropertyIndexVariantMap/CValueObject operators from CValueObject to CPropertyIndexVariantMap. --- src/blackmisc/propertyindexvariantmap.cpp | 41 +++++++++++++++++++++++ src/blackmisc/propertyindexvariantmap.h | 12 +++++++ src/blackmisc/valueobject.cpp | 41 ----------------------- src/blackmisc/valueobject.h | 12 ------- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/blackmisc/propertyindexvariantmap.cpp b/src/blackmisc/propertyindexvariantmap.cpp index e09cb9181..83daa85f5 100644 --- a/src/blackmisc/propertyindexvariantmap.cpp +++ b/src/blackmisc/propertyindexvariantmap.cpp @@ -43,6 +43,47 @@ namespace BlackMisc return !(b == a); } + /* + * Compare with CValueObject + */ + bool operator==(const CPropertyIndexVariantMap &indexMap, const CValueObject &valueObject) + { + if (indexMap.isEmpty()) return indexMap.isWildcard(); + const auto &map = indexMap.map(); + for (auto it = map.begin(); it != map.end(); ++it) + { + // QVariant cannot be compared directly + CVariant p = valueObject.propertyByIndex(it.key()); // from value object + CVariant v = it.value().toCVariant(); // from map + if (p != v) return false; + } + return true; + } + + /* + * Compare with CValueObject + */ + bool operator!=(const CPropertyIndexVariantMap &indexMap, const CValueObject &valueObject) + { + return !(indexMap == valueObject); + } + + /* + * Compare with CValueObject + */ + bool operator==(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap) + { + return valueMap == valueObject; + } + + /* + * Compare with CValueObject + */ + bool operator!=(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap) + { + return !(valueMap == valueObject); + } + /* * Convert to string */ diff --git a/src/blackmisc/propertyindexvariantmap.h b/src/blackmisc/propertyindexvariantmap.h index dd2fd51a5..83d435af3 100644 --- a/src/blackmisc/propertyindexvariantmap.h +++ b/src/blackmisc/propertyindexvariantmap.h @@ -97,6 +97,18 @@ namespace BlackMisc //! Equal operator, required if maps are directly compared, not with CValueObject friend bool operator !=(const CPropertyIndexVariantMap &a, const CPropertyIndexVariantMap &b); + //! Operator == with CValueObject + friend bool operator ==(const CPropertyIndexVariantMap &valueMap, const CValueObject &valueObject); + + //! Operator != with CValueObject + friend bool operator !=(const CPropertyIndexVariantMap &valueMap, const CValueObject &valueObject); + + //! Operator == with CValueObject + friend bool operator ==(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap); + + //! Operator != with CValueObject + friend bool operator !=(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap); + //! Map const QMap &map() const { return this->m_values; } diff --git a/src/blackmisc/valueobject.cpp b/src/blackmisc/valueobject.cpp index 6b7e82411..a4f831463 100644 --- a/src/blackmisc/valueobject.cpp +++ b/src/blackmisc/valueobject.cpp @@ -169,47 +169,6 @@ namespace BlackMisc return this->toIcon().toPixmap(); } - /* - * Compare with value map - */ - bool operator==(const CPropertyIndexVariantMap &indexMap, const CValueObject &valueObject) - { - if (indexMap.isEmpty()) return indexMap.isWildcard(); - const auto &map = indexMap.map(); - for (auto it = map.begin(); it != map.end(); ++it) - { - // QVariant cannot be compared directly - CVariant p = valueObject.propertyByIndex(it.key()); // from value object - CVariant v = it.value().toCVariant(); // from map - if (p != v) return false; - } - return true; - } - - /* - * Compare with map - */ - bool operator!=(const CPropertyIndexVariantMap &indexMap, const CValueObject &valueObject) - { - return !(indexMap == valueObject); - } - - /* - * Compare with map - */ - bool operator==(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap) - { - return valueMap == valueObject; - } - - /* - * Compare with map - */ - bool operator!=(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap) - { - return !(valueMap == valueObject); - } - /* * from DBus */ diff --git a/src/blackmisc/valueobject.h b/src/blackmisc/valueobject.h index 26a9ac97b..de28dff8a 100644 --- a/src/blackmisc/valueobject.h +++ b/src/blackmisc/valueobject.h @@ -102,18 +102,6 @@ namespace BlackMisc //! Marshalling operator <<, object to DBus friend QDBusArgument &operator<<(QDBusArgument &argument, const CValueObject &valueObject); - //! Operator == with value map - friend bool operator==(const CPropertyIndexVariantMap &valueMap, const CValueObject &valueObject); - - //! Operator != with value map - friend bool operator!=(const CPropertyIndexVariantMap &valueMap, const CValueObject &valueObject); - - //! Operator == with value map - friend bool operator==(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap); - - //! Operator != with value map - friend bool operator!=(const CValueObject &valueObject, const CPropertyIndexVariantMap &valueMap); - /*! * Compares two instances of related classes * and returns an integer less than, equal to, or greater than zero