From 4007f34e22e7138a17675e1f9fb8cb0dee3d7bd7 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sat, 6 Dec 2014 15:58:41 +0000 Subject: [PATCH] refs #247 Enabled equality comparison between CVariant and CValueObject. --- src/blackmisc/variant.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/blackmisc/variant.h b/src/blackmisc/variant.h index 9e124db4f..b51d6b14b 100644 --- a/src/blackmisc/variant.h +++ b/src/blackmisc/variant.h @@ -205,6 +205,35 @@ namespace BlackMisc const void *data() const { return m_v.data(); } }; + //! Compare stored value of CVariant with any CValueObject derived class. + template ::value>::type> + bool operator ==(const T &value, const CVariant &variant) + { + if (variant.canConvert()) { return variant.value() == value; } + return false; + } + + //! Compare stored value of CVariant with any CValueObject derived class. + template ::value>::type> + bool operator !=(const T &value, const CVariant &variant) + { + return !(value == variant); + } + + //! Compare stored value of CVariant with any CValueObject derived class. + template ::value>::type> + bool operator ==(const CVariant &variant, const T &value) + { + return value == variant; + } + + //! Compare stored value of CVariant with any CValueObject derived class. + template ::value>::type> + bool operator !=(const CVariant &variant, const T &value) + { + return !(value == variant); + } + } // namespace Q_DECLARE_METATYPE(BlackMisc::CVariant)