123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // Copyright (c) 2007-2008 Joseph Gauterin
- //
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // Tests class used by the Boost.Swap tests
- #ifndef BOOST_UTILITY_SWAP_TEST_CLASS_HPP
- #define BOOST_UTILITY_SWAP_TEST_CLASS_HPP
- class swap_test_class
- {
- int m_data;
- public:
- explicit swap_test_class(int arg = 0)
- :
- m_data(arg)
- {
- ++constructCount();
- }
- ~swap_test_class()
- {
- ++destructCount();
- }
- swap_test_class(const swap_test_class& arg)
- :
- m_data(arg.m_data)
- {
- ++copyCount();
- ++destructCount();
- }
- swap_test_class& operator=(const swap_test_class& arg)
- {
- m_data = arg.m_data;
- ++copyCount();
- return *this;
- }
- void swap(swap_test_class& other)
- {
- const int temp = m_data;
- m_data = other.m_data;
- other.m_data = temp;
- ++swapCount();
- }
- int get_data() const
- {
- return m_data;
- }
- void set_data(int arg)
- {
- m_data = arg;
- }
-
- static unsigned int swap_count(){ return swapCount(); }
- static unsigned int copy_count(){ return copyCount(); }
- static unsigned int construct_count(){ return constructCount(); }
- static unsigned int destruct_count(){ return destructCount(); }
- static void reset()
- {
- swapCount() = 0;
- copyCount() = 0;
- constructCount() = 0;
- destructCount() = 0;
- }
- private:
- static unsigned int& swapCount()
- {
- static unsigned int value = 0;
- return value;
- }
- static unsigned int& copyCount()
- {
- static unsigned int value = 0;
- return value;
- }
- static unsigned int& constructCount()
- {
- static unsigned int value = 0;
- return value;
- }
- static unsigned int& destructCount()
- {
- static unsigned int value = 0;
- return value;
- }
- };
- inline bool operator==(const swap_test_class & lhs, const swap_test_class & rhs)
- {
- return lhs.get_data() == rhs.get_data();
- }
- inline bool operator!=(const swap_test_class & lhs, const swap_test_class & rhs)
- {
- return !(lhs == rhs);
- }
- #endif
|