12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
- // test_unique_ptr.cpp
- // (C) Copyright 2002-14 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)
- #include <fstream>
- #include <cstdio> // remove, std::auto_ptr interface wrong in dinkumware
- #include <boost/config.hpp>
- #if defined(BOOST_NO_STDC_NAMESPACE)
- namespace std{
- using ::remove;
- }
- #endif
- #include <boost/serialization/nvp.hpp>
- #include "test_tools.hpp"
- /////////////////////////////////////////////////////////////
- // test std::unique_ptr serialization
- class A
- {
- private:
- friend class boost::serialization::access;
- int x;
- template<class Archive>
- void serialize(Archive &ar, const unsigned int /* file_version */){
- ar & BOOST_SERIALIZATION_NVP(x);
- }
- public:
- A(){} // default constructor
- ~A(){} // default destructor
- };
- #ifndef BOOST_NO_CXX11_SMART_PTR
- #include <boost/serialization/unique_ptr.hpp>
- int test_main(int /* argc */, char * /* argv */[]){
- const char * filename = boost::archive::tmpnam(NULL);
- BOOST_REQUIRE(NULL != filename);
- // create a new auto pointer to ta new object of type A
- std::unique_ptr<A> spa(new A);
- {
- test_ostream os(filename, TEST_STREAM_FLAGS);
- test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
- oa << BOOST_SERIALIZATION_NVP(spa);
- }
- {
- // reset the unique_ptr to NULL
- // thereby destroying the object of type A
- // note that the reset automagically maintains the reference count
- spa.reset();
- test_istream is(filename, TEST_STREAM_FLAGS);
- test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
- ia >> BOOST_SERIALIZATION_NVP(spa);
- std::remove(filename);
- }
- return EXIT_SUCCESS;
- }
- #else
- int test_main(int /* argc */, char * /* argv */[]){
- return EXIT_SUCCESS;
- }
- #endif // BOOST_NO_CXX11_SMART_PTR
|