From 8a3ba8bbed49899f105ed825b7b3f00c9eb2aef3 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sat, 15 Nov 2014 02:28:39 +0000 Subject: [PATCH] Fixed failing tests. refs #345 --- src/blackmisc/avaltitude.h | 1 + src/blackmisc/avheading.h | 1 + src/blackmisc/aviocomsystem.h | 2 -- src/blackmisc/avtrack.h | 1 + src/blackmisc/valueobject_policy.h | 6 +++++- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/avaltitude.h b/src/blackmisc/avaltitude.h index fdf9018f6..a4b173108 100644 --- a/src/blackmisc/avaltitude.h +++ b/src/blackmisc/avaltitude.h @@ -21,6 +21,7 @@ namespace BlackMisc //! \private template <> struct CValueObjectStdTuplePolicy : public CValueObjectStdTuplePolicy<> { + using Equals = Policy::Equals::MetaTuple; using Compare = Policy::Compare::MetaTuple; using Hash = Policy::Hash::MetaTuple; using DBus = Policy::DBus::MetaTuple; diff --git a/src/blackmisc/avheading.h b/src/blackmisc/avheading.h index c8c50120c..7e355b38f 100644 --- a/src/blackmisc/avheading.h +++ b/src/blackmisc/avheading.h @@ -21,6 +21,7 @@ namespace BlackMisc //! \private template <> struct CValueObjectStdTuplePolicy : public CValueObjectStdTuplePolicy<> { + using Equals = Policy::Equals::MetaTuple; using Compare = Policy::Compare::MetaTuple; using Hash = Policy::Hash::MetaTuple; using DBus = Policy::DBus::MetaTuple; diff --git a/src/blackmisc/aviocomsystem.h b/src/blackmisc/aviocomsystem.h index ad510a846..34e7003a2 100644 --- a/src/blackmisc/aviocomsystem.h +++ b/src/blackmisc/aviocomsystem.h @@ -20,8 +20,6 @@ namespace BlackMisc //! \private template <> struct CValueObjectStdTuplePolicy : public CValueObjectStdTuplePolicy<> { - using MetaType = Policy::MetaType::Default; - using Equals = Policy::Equals::None; using LessThan = Policy::LessThan::None; using Compare = Policy::Compare::Own; using Hash = Policy::Hash::Own; diff --git a/src/blackmisc/avtrack.h b/src/blackmisc/avtrack.h index da8843dcc..ba59aa547 100644 --- a/src/blackmisc/avtrack.h +++ b/src/blackmisc/avtrack.h @@ -21,6 +21,7 @@ namespace BlackMisc //! \private template <> struct CValueObjectStdTuplePolicy : public CValueObjectStdTuplePolicy<> { + using Equals = Policy::Equals::MetaTuple; using Compare = Policy::Compare::MetaTuple; using Hash = Policy::Hash::MetaTuple; using DBus = Policy::DBus::MetaTuple; diff --git a/src/blackmisc/valueobject_policy.h b/src/blackmisc/valueobject_policy.h index 878295eda..fa920d5ac 100644 --- a/src/blackmisc/valueobject_policy.h +++ b/src/blackmisc/valueobject_policy.h @@ -86,10 +86,14 @@ namespace BlackMisc struct Ops : private Private::EncapsulationBreaker { //! Equals operator - friend bool operator ==(const T &a, const T &b) { return Private::EncapsulationBreaker::toMetaTuple(a) == Private::EncapsulationBreaker::toMetaTuple(b); } + friend bool operator ==(const T &a, const T &b) { return Private::EncapsulationBreaker::toMetaTuple(a) == Private::EncapsulationBreaker::toMetaTuple(b) && baseEquals(a, b); } //! Not equals operator friend bool operator !=(const T &a, const T &b) { return !(a == b); } + + private: + template static bool baseEquals(const U &a, const U &b) { return a == b; } + template static bool baseEquals(const CValueObject &, const CValueObject &) { return true; } }; };