From 79eecd18096ba3a3384b576fe170f18055a4a8c9 Mon Sep 17 00:00:00 2001 From: Gabriel Hare Date: Fri, 15 Aug 2014 21:49:08 -0700 Subject: [PATCH] DecorationDisposition implements copy and assign only when building using c++98 --- autowiring/DecorationDisposition.h | 40 ++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/autowiring/DecorationDisposition.h b/autowiring/DecorationDisposition.h index 8bf7f416c..f61f3df52 100644 --- a/autowiring/DecorationDisposition.h +++ b/autowiring/DecorationDisposition.h @@ -10,10 +10,46 @@ struct SatCounter; /// struct DecorationDisposition { - DecorationDisposition(const DecorationDisposition&) = delete; +#if !AUTOWIRING_UNSAFE_HASHTABLE DecorationDisposition(DecorationDisposition&&) = delete; - void operator=(const DecorationDisposition&) = delete; void operator=(DecorationDisposition&&) = delete; + DecorationDisposition(const DecorationDisposition& source) = delete; + void operator=(const DecorationDisposition& source) = delete; +#else //!AUTOWIRING_UNSAFE_HASHTABLE + // The methods below are needed for c++98 builds + DecorationDisposition(DecorationDisposition&& source) : + m_decoration(source.m_decoration), + m_pImmediate(source.m_pImmediate), + m_publisher(source.m_publisher), + satisfied(source.satisfied), + isCheckedOut(source.isCheckedOut), + wasCheckedOut(source.wasCheckedOut) + {} + void operator=(DecorationDisposition&& source) { + m_decoration = std::move(source.m_decoration); + m_pImmediate = source.m_pImmediate; + source.m_pImmediate = nullptr; + m_publisher = source.m_publisher; + satisfied = source.satisfied; + isCheckedOut = source.isCheckedOut; + wasCheckedOut = source.wasCheckedOut; + } + DecorationDisposition(const DecorationDisposition& source) : + m_pImmediate(nullptr), + m_publisher(source.m_publisher), + satisfied(source.satisfied), + isCheckedOut(source.isCheckedOut), + wasCheckedOut(source.wasCheckedOut) + {} + void operator=(const DecorationDisposition& source) { + m_decoration->reset(); + m_pImmediate = nullptr; + m_publisher = source.m_publisher; + satisfied = source.satisfied; + isCheckedOut = source.isCheckedOut; + wasCheckedOut = source.wasCheckedOut; + } +#endif //!AUTOWIRING_UNSAFE_HASHTABLE DecorationDisposition(void) : m_pImmediate(nullptr),