sl@0: //----------------------------------------------------------------------------- sl@0: // boost-libs variant/libs/test/class_a.h header file sl@0: // See http://www.boost.org for updates, documentation, and revision history. sl@0: //----------------------------------------------------------------------------- sl@0: // sl@0: // Copyright (c) 2003 sl@0: // Eric Friedman, Itay Maman sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. (See sl@0: // accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: sl@0: #ifndef _CLASSA_H_INC_ sl@0: #define _CLASSA_H_INC_ sl@0: sl@0: #include // for std::swap sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: struct class_a sl@0: { sl@0: ~class_a(); sl@0: class_a(int n = 5511); sl@0: class_a(const class_a& other); sl@0: sl@0: class_a& operator=(const class_a& rhs); sl@0: void swap(class_a& other); sl@0: sl@0: int get() const; sl@0: sl@0: private: sl@0: int n_; sl@0: class_a* self_p_; sl@0: sl@0: }; //Class_a sl@0: sl@0: std::ostream& operator<<(std::ostream& strm, const class_a& a); sl@0: sl@0: using namespace std; sl@0: class_a::~class_a() sl@0: { sl@0: assert(self_p_ == this); sl@0: } sl@0: sl@0: class_a::class_a(int n) sl@0: { sl@0: n_ = n; sl@0: self_p_ = this; sl@0: } sl@0: sl@0: class_a::class_a(const class_a& other) sl@0: { sl@0: n_ = other.n_; sl@0: self_p_ = this; sl@0: } sl@0: sl@0: sl@0: class_a& class_a::operator=(const class_a& rhs) sl@0: { sl@0: class_a temp(rhs); sl@0: swap(temp); sl@0: sl@0: return *this; sl@0: } sl@0: sl@0: void class_a::swap(class_a& other) sl@0: { sl@0: std::swap(n_, other.n_); sl@0: } sl@0: sl@0: int class_a::get() const sl@0: { sl@0: return n_; sl@0: } sl@0: sl@0: std::ostream& operator<<(std::ostream& strm, const class_a& a) sl@0: { sl@0: return strm << "class_a(" << a.get() << ")"; sl@0: } sl@0: sl@0: #endif //_CLASSA_H_INC_