#ifndef BOOST_SERIALIZATION_TEST_A_HPP #define BOOST_SERIALIZATION_TEST_A_HPP // MS compatible compilers support #pragma once #if defined(_MSC_VER) # pragma once #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // A.hpp simple class test // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to 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) // See http://www.boost.org for updates, documentation, and revision history. #include // for friend output operators #include // size_t #include #include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::size_t; } #endif #include #include #include #include #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) #include #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) #include #endif #endif #include #include #include #if defined(A_IMPORT) #define DLL_DECL BOOST_SYMBOL_IMPORT #elif defined(A_EXPORT) #define DLL_DECL BOOST_SYMBOL_EXPORT #else #define DLL_DECL #endif class DLL_DECL A { private: friend class boost::serialization::access; // note: from an aesthetic perspective, I would much prefer to have this // defined out of line. Unfortunately, this trips a bug in the VC 6.0 // compiler. So hold our nose and put it her to permit running of tests. // mscvc 6.0 requires template functions to be implemented. For this // reason we can't make abstract. #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) template void serialize( Archive &ar, const unsigned int /* file_version */ ){ ar & BOOST_SERIALIZATION_NVP(b); #ifndef BOOST_NO_INT64_T ar & BOOST_SERIALIZATION_NVP(f); ar & BOOST_SERIALIZATION_NVP(g); #endif #if BOOST_WORKAROUND(__BORLANDC__, <= 0x551 ) int i; if(BOOST_DEDUCED_TYPENAME Archive::is_saving::value){ i = l; ar & BOOST_SERIALIZATION_NVP(i); } else{ ar & BOOST_SERIALIZATION_NVP(i); l = i; } #else ar & BOOST_SERIALIZATION_NVP(l); #endif ar & BOOST_SERIALIZATION_NVP(m); ar & BOOST_SERIALIZATION_NVP(n); ar & BOOST_SERIALIZATION_NVP(o); ar & BOOST_SERIALIZATION_NVP(p); ar & BOOST_SERIALIZATION_NVP(q); #ifndef BOOST_NO_CWCHAR ar & BOOST_SERIALIZATION_NVP(r); #endif ar & BOOST_SERIALIZATION_NVP(c); ar & BOOST_SERIALIZATION_NVP(s); ar & BOOST_SERIALIZATION_NVP(t); ar & BOOST_SERIALIZATION_NVP(u); ar & BOOST_SERIALIZATION_NVP(v); ar & BOOST_SERIALIZATION_NVP(w); ar & BOOST_SERIALIZATION_NVP(x); ar & BOOST_SERIALIZATION_NVP(y); #ifndef BOOST_NO_STD_WSTRING ar & BOOST_SERIALIZATION_NVP(z); #endif } #else template void serialize( Archive &ar, const unsigned int /* file_version */ ); #endif bool b; #ifndef BOOST_NO_INT64_T boost::int64_t f; boost::uint64_t g; #endif enum h { i = 0, j, k } l; std::size_t m; signed long n; unsigned long o; signed short p; unsigned short q; #ifndef BOOST_NO_CWCHAR wchar_t r; #endif char c; signed char s; unsigned char t; signed int u; unsigned int v; float w; double x; std::string y; #ifndef BOOST_NO_STD_WSTRING std::wstring z; #endif public: A(); bool check_equal(const A &rhs) const; bool operator==(const A &rhs) const; bool operator!=(const A &rhs) const; bool operator<(const A &rhs) const; // used by less // hash function for class A operator std::size_t () const; friend std::ostream & operator<<(std::ostream & os, A const & a); }; #undef DLL_DECL #endif // BOOST_SERIALIZATION_TEST_A_HPP