diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/boost/libs/serialization/test | |
parent | Initial commit. (diff) | |
download | ceph-upstream/16.2.11+ds.tar.xz ceph-upstream/16.2.11+ds.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
160 files changed, 19102 insertions, 0 deletions
diff --git a/src/boost/libs/serialization/test/A.cpp b/src/boost/libs/serialization/test/A.cpp new file mode 100644 index 000000000..332505ffa --- /dev/null +++ b/src/boost/libs/serialization/test/A.cpp @@ -0,0 +1,218 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// A.cpp 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 <cassert> +#include <cstdlib> // rand() +#include <cstddef> // size_t +#include <boost/math/special_functions/next.hpp> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include <boost/detail/workaround.hpp> +#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) +#include <boost/archive/dinkumware.hpp> +#endif + +#include "A.hpp" + +template<class S> +void randomize(S &x) +{ + assert(0 == x.size()); + for(;;){ + unsigned int i = std::rand() % 27; + if(0 == i) + break; + x += static_cast<typename S::value_type>('a' - 1 + i); + } +} + +template<class T> +void accumulate(std::size_t & s, const T & t){ + const char * tptr = (const char *)(& t); + unsigned int count = sizeof(t); + while(count-- > 0){ + s += *tptr++; + } +} +A_DLL_DECL +A::operator std::size_t () const { + std::size_t retval = 0; + accumulate(retval, b); + #ifndef BOOST_NO_INT64_T + accumulate(retval, f); + accumulate(retval, g); + #endif + accumulate(retval, l); + accumulate(retval, m); + accumulate(retval, n); + accumulate(retval, o); + accumulate(retval, p); + accumulate(retval, q); + #ifndef BOOST_NO_CWCHAR + accumulate(retval, r); + #endif + accumulate(retval, c); + accumulate(retval, s); + accumulate(retval, t); + accumulate(retval, u); + accumulate(retval, v); + return retval; +} + +#if defined(_MSC_VER) +#pragma warning(push) // Save warning settings. +#pragma warning(disable : 4244) // Disable possible loss of data warning +#endif + +A_DLL_DECL +A::A() : + b(true), + #ifndef BOOST_NO_INT64_T + f(static_cast<boost::int64_t>(std::rand()) * static_cast<boost::int64_t>(std::rand())), + g(static_cast<boost::uint64_t>(std::rand()) * static_cast<boost::uint64_t>(std::rand())), + #endif + l(static_cast<enum h>(std::rand() % 3)), + m(std::rand()), + n(std::rand()), + o(std::rand()), + p(std::rand()), + q(std::rand()), + #ifndef BOOST_NO_CWCHAR + r(std::rand()), + #endif + c(0xff & std::rand()), + s(0xff & std::rand()), + t(0xff & std::rand()), + u(std::rand()), + v(std::rand()), + w((float)std::rand()), + x((double)std::rand()) +{ + randomize(y); + #ifndef BOOST_NO_STD_WSTRING + randomize(z); + #endif +} + +#if defined(_MSC_VER) +#pragma warning(pop) // Restore warnings to previous state. +#endif + +A_DLL_DECL bool +A::operator==(const A &rhs) const { + if(b != rhs.b) + return false; + if(l != rhs.l) + return false; + #ifndef BOOST_NO_INT64_T + if(f != rhs.f) + return false; + if(g != rhs.g) + return false; + #endif + if(m != rhs.m) + return false; + if(n != rhs.n) + return false; + if(o != rhs.o) + return false; + if(p != rhs.p) + return false; + if(q != rhs.q) + return false; + #ifndef BOOST_NO_CWCHAR + if(r != rhs.r) + return false; + #endif + if(c != rhs.c) + return false; + if(s != rhs.s) + return false; + if(t != rhs.t) + return false; + if(u != rhs.u) + return false; + if(v != rhs.v) + return false; + if(std::abs( boost::math::float_distance(w, rhs.w)) > 1) + return false; + if(std::abs( boost::math::float_distance(x, rhs.x)) > 1) + return false; + if(0 != y.compare(rhs.y)) + return false; + #ifndef BOOST_NO_STD_WSTRING + if(0 != z.compare(rhs.z)) + return false; + #endif + return true; +} + +A_DLL_DECL bool +A::operator!=(const A &rhs) const { + return ! (*this == rhs); +} + +A_DLL_DECL bool +A::operator<(const A &rhs) const { + if(b != rhs.b) + return b < rhs.b; + #ifndef BOOST_NO_INT64_T + if(f != rhs.f) + return f < rhs.f; + if(g != rhs.g) + return g < rhs.g; + #endif + if(l != rhs.l ) + return l < rhs.l; + if(m != rhs.m ) + return m < rhs.m; + if(n != rhs.n ) + return n < rhs.n; + if(o != rhs.o ) + return o < rhs.o; + if(p != rhs.p ) + return p < rhs.p; + if(q != rhs.q ) + return q < rhs.q; + #ifndef BOOST_NO_CWCHAR + if(r != rhs.r ) + return r < rhs.r; + #endif + if(c != rhs.c ) + return c < rhs.c; + if(s != rhs.s ) + return s < rhs.s; + if(t != rhs.t ) + return t < rhs.t; + if(u != rhs.u ) + return u < rhs.u; + if(v != rhs.v ) + return v < rhs.v; + if(w != rhs.w ) + return w < rhs.w; + if(x != rhs.x ) + return x < rhs.x; + int i = y.compare(rhs.y); + if(i != 0 ) + return i < 0; + #ifndef BOOST_NO_STD_WSTRING + int j = z.compare(rhs.z); + if(j != 0 ) + return j < 0; + #endif + return false; +} diff --git a/src/boost/libs/serialization/test/A.hpp b/src/boost/libs/serialization/test/A.hpp new file mode 100644 index 000000000..67445d7b4 --- /dev/null +++ b/src/boost/libs/serialization/test/A.hpp @@ -0,0 +1,95 @@ +#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 <ostream> // for friend output operators +#include <cstddef> // size_t +#include <boost/config.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::size_t; +} +#endif + +#include <boost/limits.hpp> +#include <boost/cstdint.hpp> + +#include <boost/serialization/access.hpp> +#include <boost/serialization/string.hpp> + +#if defined(A_IMPORT) + #define A_DLL_DECL BOOST_SYMBOL_IMPORT + #pragma message("A imported") +#elif defined(A_EXPORT) + #define A_DLL_DECL BOOST_SYMBOL_EXPORT + #pragma message ("A exported") +#endif + +#ifndef A_DLL_DECL + #define A_DLL_DECL +#endif + +class A_DLL_DECL A { +private: + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive &ar, + const unsigned int /* file_version */ + ); + 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); +}; + +#endif // BOOST_SERIALIZATION_TEST_A_HPP diff --git a/src/boost/libs/serialization/test/A.ipp b/src/boost/libs/serialization/test/A.ipp new file mode 100644 index 000000000..552e5fa19 --- /dev/null +++ b/src/boost/libs/serialization/test/A.ipp @@ -0,0 +1,60 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// A.ipp 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. + +#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) +#include <boost/archive/dinkumware.hpp> +#endif + +#include <boost/serialization/nvp.hpp> +#include "A.hpp" + +template<class Archive> +void A::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 +} diff --git a/src/boost/libs/serialization/test/B.hpp b/src/boost/libs/serialization/test/B.hpp new file mode 100644 index 000000000..9111b1326 --- /dev/null +++ b/src/boost/libs/serialization/test/B.hpp @@ -0,0 +1,115 @@ +#ifndef BOOST_SERIALIZATION_TEST_B_HPP +#define BOOST_SERIALIZATION_TEST_B_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// B.hpp + +// (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 <cstdlib> // for rand() +#include <cmath> +#include <boost/math/special_functions/next.hpp> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; +} +#endif + +#include <boost/serialization/version.hpp> +#include <boost/serialization/split_member.hpp> +#include <boost/serialization/base_object.hpp> + +#include "A.hpp" + +/////////////////////////////////////////////////////// +// Derived class test +class B : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + // write any base class info to the archive + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + + // write out members + 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); + } + + template<class Archive> + void load(Archive & ar, const unsigned int file_version) + { + // read any base class info to the archive + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + switch(file_version){ + case 1: + case 2: + 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); + break; + default: + break; + } + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() + signed char s; + unsigned char t; + signed int u; + unsigned int v; + float w; + double x; +public: + B(); + virtual ~B(){}; + bool operator==(const B &rhs) const; +}; + +B::B() : + s(static_cast<signed char>(std::rand())), + t(static_cast<unsigned char>(std::rand())), + u(std::rand()), + v(std::rand()), + w((float)std::rand() / std::rand()), + x((double)std::rand() / std::rand()) +{ +} + +BOOST_CLASS_VERSION(B, 2) + +inline bool B::operator==(const B &rhs) const +{ + return + A::operator==(rhs) + && s == rhs.s + && t == rhs.t + && u == rhs.u + && v == rhs.v + && std::abs( boost::math::float_distance(w, rhs.w)) < 2 + && std::abs( boost::math::float_distance(x, rhs.x)) < 2 + ; +} + +#endif // BOOST_SERIALIZATION_TEST_B_HPP diff --git a/src/boost/libs/serialization/test/C.hpp b/src/boost/libs/serialization/test/C.hpp new file mode 100644 index 000000000..a183db854 --- /dev/null +++ b/src/boost/libs/serialization/test/C.hpp @@ -0,0 +1,68 @@ +#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 +// C.hpp + +// (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 <boost/config.hpp> +#include <boost/serialization/traits.hpp> +#include <boost/serialization/split.hpp> + +#include "B.hpp" + +/////////////////////////////////////////////////////// +// Contained class +class C +{ +private: + friend class boost::serialization::access; + template<class Archive> + void save(Archive &ar, boost::archive::version_type file_version) const; + template<class Archive> + void load(Archive & ar, boost::archive::version_type file_version); + BOOST_SERIALIZATION_MEMBER_SPLIT() + B b; +public: + bool operator==(const C &rhs) const; +}; + +BOOST_CLASS_VERSION(C, 1) + +inline bool C::operator==(const C &rhs) const +{ + return b == rhs.b; +} + +template<class Archive> +inline void save(Archive &ar, boost::archive::version_type file_version) const +{ + ar << b; +} + +template<class Archive> +inline void load(Archive & ar, boost::archive::version_type file_version){ +{ + switch(file_version){ + case 1: + ar >> b; + break; + case 2: + default: + assert(false); + break; + } +} + +#endif // BOOST_SERIALIZATION_TEST_C_HPP diff --git a/src/boost/libs/serialization/test/D.hpp b/src/boost/libs/serialization/test/D.hpp new file mode 100644 index 000000000..8af030b68 --- /dev/null +++ b/src/boost/libs/serialization/test/D.hpp @@ -0,0 +1,88 @@ +#ifndef BOOST_SERIALIZATION_TEST_D_HPP +#define BOOST_SERIALIZATION_TEST_D_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// D.hpp + +// (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 <cstddef> // NULL + +#include "test_tools.hpp" +#include <boost/detail/no_exceptions_support.hpp> +#include <boost/serialization/throw_exception.hpp> +#include <boost/serialization/split_member.hpp> + +#include "B.hpp" + +/////////////////////////////////////////////////////// +// Contained class with multiple identical pointers +class D +{ +private: + friend class boost::serialization::access; + B *b1; + B *b2; + template<class Archive> + void save(Archive &ar, const unsigned int file_version) const{ + ar << BOOST_SERIALIZATION_NVP(b1); + ar << BOOST_SERIALIZATION_NVP(b2); + } + + template<class Archive> + void load(Archive & ar, const unsigned int file_version){ + BOOST_TRY { + ar >> boost::serialization::make_nvp("b", b1); + ar >> boost::serialization::make_nvp("b", b2); + } + BOOST_CATCH (...){ + // eliminate invalid pointers + b1 = NULL; + b2 = NULL; + BOOST_FAIL( "multiple identical pointers failed to load" ); + } + BOOST_CATCH_END + // check that loading was correct + BOOST_CHECK(b1 == b2); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +public: + D(); + ~D(); + bool operator==(const D &rhs) const; +}; + +BOOST_CLASS_VERSION(D, 3) + +D::D() +{ + b1 = new B(); + b2 = b1; +} + +D::~D() +{ + delete b1; +} + +bool D::operator==(const D &rhs) const +{ + if(! (*b1 == *(rhs.b1)) ) + return false; + if(! (*b2 == *(rhs.b2)) ) + return false; + return true; +} + +#endif // BOOST_SERIALIZATION_TEST_D_HPP diff --git a/src/boost/libs/serialization/test/J.hpp b/src/boost/libs/serialization/test/J.hpp new file mode 100644 index 000000000..1849ee755 --- /dev/null +++ b/src/boost/libs/serialization/test/J.hpp @@ -0,0 +1,51 @@ +#ifndef BOOST_SERIALIZATION_TEST_J_HPP +#define BOOST_SERIALIZATION_TEST_J_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// J.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 <boost/serialization/base_object.hpp> + +#include "A.hpp" + +/////////////////////////////////////////////////////// +// class with a member which refers to itself +class J : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive &ar, + const unsigned int /* file_version */ + ){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + ar & BOOST_SERIALIZATION_NVP(j); + } +public: + bool operator==(const J &rhs) const; + J *j; + J(J *_j) : j(_j) {} + J() : j(NULL){} +}; + +BOOST_CLASS_VERSION(J, 6) + +bool J::operator==(const J &rhs) const +{ + return static_cast<const A &>(*this) == static_cast<const A &>(rhs); +} + +#endif // BOOST_SERIALIZATION_TEST_J_HPP diff --git a/src/boost/libs/serialization/test/Jamfile.v2 b/src/boost/libs/serialization/test/Jamfile.v2 new file mode 100644 index 000000000..cce152167 --- /dev/null +++ b/src/boost/libs/serialization/test/Jamfile.v2 @@ -0,0 +1,190 @@ +# Boost serialization Library test Jamfile + +# (C) Copyright Robert Ramey 2002-2004. +# Use, modification, and distribution are 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) +# + +project libs/serialization/test + : id serialization_test + : requirements <library>/boost/filesystem + ; + +# import rules for testing conditional on config file variables +import ../../config/checks/config : requires ; + +# import rules from the boost serialization test +import ../util/test : + run-template + run-invoke + run-winvoke + test-bsl-run-no-lib + test-bsl-run + test-bsl-run_archive + test-bsl-run_files + test-bsl-run_polymorphic_files +; + +BOOST_ARCHIVE_LIST = [ modules.peek : BOOST_ARCHIVE_LIST ] ; + +lib dll_a + : + dll_a.cpp + ../build//boost_serialization + : + <link>shared + ; + +lib dll_polymorphic_base + : + dll_polymorphic_base.cpp + ../build//boost_serialization + : + <link>shared + ; + +lib dll_polymorphic_derived2 + : + dll_polymorphic_derived2.cpp + dll_polymorphic_base + ../build//boost_serialization + : + <link>shared + ; + +test-suite "serialization" : + [ test-bsl-run_files test_array : A : : [ requires cxx11_hdr_array ] ] # BOOST_NO_CXX11_HDR_ARRAY + [ test-bsl-run_files test_boost_array : A ] + [ test-bsl-run_files test_native_array : A ] + [ test-bsl-run_files test_binary ] + [ test-bsl-run_files test_class_info_save ] + [ test-bsl-run_files test_class_info_load ] + [ test-bsl-run_files test_bitset ] + [ test-bsl-run_files test_complex ] + [ test-bsl-run_files test_contained_class : A ] + [ test-bsl-run_files test_cyclic_ptrs : A ] + [ test-bsl-run_files test_delete_pointer ] + [ test-bsl-run_files test_deque : A ] + [ test-bsl-run_files test_derived ] + [ test-bsl-run_files test_derived_class : A ] + [ test-bsl-run_files test_derived_class_ptr : A ] + [ test-bsl-run_files test_diamond ] + [ test-bsl-run_files test_diamond_complex ] + [ test-bsl-run_files test_forward_list : A : : [ requires cxx11_hdr_forward_list ] ] # BOOST_NO_CXX11_HDR_FORWARD_LIST + [ test-bsl-run_files test_forward_list_ptrs : A : : [ requires cxx11_hdr_forward_list ] ] # BOOST_NO_CXX11_HDR_FORWARD_LIST + [ test-bsl-run_files test_helper_support ] + [ test-bsl-run_files test_interrupts ] + [ test-bsl-run_files test_list : A ] + [ test-bsl-run_files test_list_ptrs : A ] + [ test-bsl-run_files test_map : A ] + [ test-bsl-run_files test_map_hashed : A : : [ requires hash ] ] # BOOST_HAS_HASH + [ test-bsl-run_files test_map_unordered : A : : [ requires cxx11_hdr_unordered_map ] ] # BOOST_NO_CXX11_HDR_UNORDERED_MAP + [ test-bsl-run_files test_map_boost_unordered : A ] + [ test-bsl-run_files test_mi ] + [ test-bsl-run_files test_multiple_ptrs : A ] + [ test-bsl-run_files test_multiple_inheritance ] + [ test-bsl-run_files test_non_intrusive ] + [ test-bsl-run_files test_non_default_ctor ] + [ test-bsl-run_files test_non_default_ctor2 ] + [ test-bsl-run_files test_null_ptr ] + [ test-bsl-run_files test_nvp : A ] + [ test-bsl-run_files test_object ] + [ test-bsl-run_files test_primitive ] + [ test-bsl-run_files test_priority_queue : A ] + [ test-bsl-run_files test_queue : A ] + [ test-bsl-run_files test_recursion : A ] + [ test-bsl-run_files test_registered ] + [ test-bsl-run_files test_set : A ] + [ test-bsl-run_files test_set_hashed : A : : [ requires hash ] ] # BOOST_HAS_HASH + [ test-bsl-run_files test_set_unordered : A : : [ requires cxx11_hdr_unordered_set ] ] # BOOST_NO_CXX11_HDR_UNORDERED_SET + [ test-bsl-run_files test_set_boost_unordered : A ] + [ test-bsl-run_files test_simple_class : A ] + [ test-bsl-run_files test_simple_class_ptr : A ] + [ test-bsl-run_files test_slist : A : : [ requires slist ] ] # BOOST_HAS_SLIST ] + [ test-bsl-run_files test_slist_ptrs : A : : [ requires slist ] ] # BOOST_HAS_SLIST ] ] + [ test-bsl-run_files test_split ] + [ test-bsl-run_files test_stack : A ] + [ test-bsl-run_files test_tracking ] + [ test-bsl-run_files test_unregistered ] + [ test-bsl-run_files test_unique_ptr ] + [ test-bsl-run_files test_valarray ] + [ test-bsl-run_files test_variant : A ] + [ test-bsl-run_files test_vector : A ] + [ test-bsl-run_files test_new_operator : A ] + [ test-bsl-run_files test_optional ] + [ test-bsl-run_files test_shared_ptr ] + [ test-bsl-run_files test_shared_ptr_multi_base ] + [ test-bsl-run_files test_shared_ptr_132 : : : [ requires auto_ptr ] ] # BOOST_NO_AUTO_PTR + + [ test-bsl-run_polymorphic_files test_polymorphic : test_polymorphic_A A ] + [ test-bsl-run_polymorphic_files test_polymorphic2 : test_polymorphic2imp ] + [ test-bsl-run_polymorphic_files test_p_helper ] + + # this test should pass with both shared and static linking. But B2 get's mixed up with static linking + # so we'll just run the shared version of the test, which is the one that we're most interested + # in anyway. + [ test-bsl-run_polymorphic_files test_dll_exported : polymorphic_derived1 : dll_polymorphic_base dll_polymorphic_derived2 : <link>static:<build>no ] + + [ test-bsl-run_polymorphic_files test_no_rtti : polymorphic_base polymorphic_derived1 polymorphic_derived2 ] + [ test-bsl-run_polymorphic_files test_exported : polymorphic_base polymorphic_derived1 polymorphic_derived2 ] + + # should compile + [ compile test_strong_typedef.cpp ] + ; + +if ! $(BOOST_ARCHIVE_LIST) { + test-suite "serialization2" : + [ test-bsl-run test_inclusion ] + [ test-bsl-run test_inclusion2 ] + # boost build has the feature that the building if libraries vs dll is automatic + # in that dependent libraries are built the same way - shared/static - that + # the application is. On some platforms (e.g windows) this is required to avoid + # problems of linking incompatible versions of the runtime library. So + # we suppress tests of our dlls when using static libraries + + [ test-bsl-run test_dll_simple : : dll_a : <link>static:<build>no ] + # [ test-bsl-run test_dll_plugin : : dll_derived2 : <link>static:<build>no <target-os>linux:<linkflags>-ldl ] + + [ test-bsl-run test_private_ctor ] + [ test-bsl-run test_reset_object_address : A ] + [ test-bsl-run test_void_cast ] + [ test-bsl-run test_mult_archive_types ] + [ test-bsl-run test_iterators ] + [ test-bsl-run test_iterators_base64 ] + [ test-bsl-run test_smart_cast ] + [ test-bsl-run test_codecvt_null ] + [ test-bsl-run test_singleton ] + [ test-bsl-run test_singleton_inherited ] + [ test-bsl-run test_singleton_plain ] + + # [ test-bsl-run test_z ] + + # should fail compilation + [ compile-fail test_not_serializable.cpp ] + [ compile-fail test_traits_fail.cpp ] + [ compile-fail test_const_load_fail1.cpp ] + [ compile-fail test_const_load_fail2.cpp ] + [ compile-fail test_const_load_fail3.cpp ] + [ compile-fail test_const_load_fail1_nvp.cpp ] + [ compile-fail test_const_load_fail2_nvp.cpp ] + [ compile-fail test_const_load_fail3_nvp.cpp ] + [ compile-fail test_check.cpp ] + + # should compile with a warning message + [ compile test_static_warning.cpp ] + [ compile test_const_save_warn1.cpp ] + [ compile test_const_save_warn2.cpp ] + [ compile test_const_save_warn3.cpp ] + + # note - library unable to detect these errors for now + #[ compile test_const_save_warn1_nvp.cpp ] + #[ compile test_const_save_warn2_nvp.cpp ] + #[ compile test_const_save_warn3_nvp.cpp ] + + # should compile + [ compile test_traits_pass.cpp ] + [ compile test_const_pass.cpp ] + ; +} + diff --git a/src/boost/libs/serialization/test/b2.log b/src/boost/libs/serialization/test/b2.log new file mode 100644 index 000000000..03e7510b1 --- /dev/null +++ b/src/boost/libs/serialization/test/b2.log @@ -0,0 +1,2571 @@ +warning: mismatched versions of Boost.Build engine and core +warning: Boost.Build engine (b2) is 2018.02.00 +warning: Boost.Build core (at /Users/robertramey/WorkingProjects/modular-boost/tools/build/src) is 4.0-git +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +polymorphic_text_archive +polymorphic_text_warchive +polymorphic_binary_archive +polymorphic_xml_archive +polymorphic_xml_warchive +Performing configuration checks + + - default address-model : 64-bit (cached) + - default architecture : x86 (cached) + - symlinks supported : yes (cached) + - Boost.Config Feature Check: cxx11_hdr_array : yes (cached) + - Boost.Config Feature Check: std_wstreambuf : yes (cached) + - Boost.Config Feature Check: cxx11_hdr_forward_list : yes (cached) + - Boost.Config Feature Check: hash : no (cached) + - Boost.Config Feature Check: cxx11_hdr_unordered_map : no (cached) + - Boost.Config Feature Check: cxx11_hdr_unordered_set : no (cached) + - Boost.Config Feature Check: slist : no (cached) + - Boost.Config Feature Check: auto_ptr : yes (cached) +boost-test(RUN) "serialization/test_array_text_archive" : "libs/serialization/test/test_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_array_text_warchive" : "libs/serialization/test/test_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_array_binary_archive" : "libs/serialization/test/test_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_array_xml_archive" : "libs/serialization/test/test_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_array_xml_warchive" : "libs/serialization/test/test_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_boost_array_text_archive" : "libs/serialization/test/test_boost_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_boost_array_text_warchive" : "libs/serialization/test/test_boost_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_boost_array_binary_archive" : "libs/serialization/test/test_boost_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_boost_array_xml_archive" : "libs/serialization/test/test_boost_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_boost_array_xml_warchive" : "libs/serialization/test/test_boost_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_native_array_text_archive" : "libs/serialization/test/test_native_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_native_array_text_warchive" : "libs/serialization/test/test_native_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_native_array_binary_archive" : "libs/serialization/test/test_native_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_native_array_xml_archive" : "libs/serialization/test/test_native_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_native_array_xml_warchive" : "libs/serialization/test/test_native_array.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_binary_text_archive" : "libs/serialization/test/test_binary.cpp" +boost-test(RUN) "serialization/test_binary_text_warchive" : "libs/serialization/test/test_binary.cpp" +boost-test(RUN) "serialization/test_binary_binary_archive" : "libs/serialization/test/test_binary.cpp" +boost-test(RUN) "serialization/test_binary_xml_archive" : "libs/serialization/test/test_binary.cpp" +boost-test(RUN) "serialization/test_binary_xml_warchive" : "libs/serialization/test/test_binary.cpp" +boost-test(RUN) "serialization/test_class_info_save_text_archive" : "libs/serialization/test/test_class_info_save.cpp" +boost-test(RUN) "serialization/test_class_info_save_text_warchive" : "libs/serialization/test/test_class_info_save.cpp" +boost-test(RUN) "serialization/test_class_info_save_binary_archive" : "libs/serialization/test/test_class_info_save.cpp" +boost-test(RUN) "serialization/test_class_info_save_xml_archive" : "libs/serialization/test/test_class_info_save.cpp" +boost-test(RUN) "serialization/test_class_info_save_xml_warchive" : "libs/serialization/test/test_class_info_save.cpp" +boost-test(RUN) "serialization/test_class_info_load_text_archive" : "libs/serialization/test/test_class_info_load.cpp" +boost-test(RUN) "serialization/test_class_info_load_text_warchive" : "libs/serialization/test/test_class_info_load.cpp" +boost-test(RUN) "serialization/test_class_info_load_binary_archive" : "libs/serialization/test/test_class_info_load.cpp" +boost-test(RUN) "serialization/test_class_info_load_xml_archive" : "libs/serialization/test/test_class_info_load.cpp" +boost-test(RUN) "serialization/test_class_info_load_xml_warchive" : "libs/serialization/test/test_class_info_load.cpp" +boost-test(RUN) "serialization/test_bitset_text_archive" : "libs/serialization/test/test_bitset.cpp" +boost-test(RUN) "serialization/test_bitset_text_warchive" : "libs/serialization/test/test_bitset.cpp" +boost-test(RUN) "serialization/test_bitset_binary_archive" : "libs/serialization/test/test_bitset.cpp" +boost-test(RUN) "serialization/test_bitset_xml_archive" : "libs/serialization/test/test_bitset.cpp" +boost-test(RUN) "serialization/test_bitset_xml_warchive" : "libs/serialization/test/test_bitset.cpp" +boost-test(RUN) "serialization/test_complex_text_archive" : "libs/serialization/test/test_complex.cpp" +boost-test(RUN) "serialization/test_complex_text_warchive" : "libs/serialization/test/test_complex.cpp" +boost-test(RUN) "serialization/test_complex_binary_archive" : "libs/serialization/test/test_complex.cpp" +boost-test(RUN) "serialization/test_complex_xml_archive" : "libs/serialization/test/test_complex.cpp" +boost-test(RUN) "serialization/test_complex_xml_warchive" : "libs/serialization/test/test_complex.cpp" +boost-test(RUN) "serialization/test_contained_class_text_archive" : "libs/serialization/test/test_contained_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_contained_class_text_warchive" : "libs/serialization/test/test_contained_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_contained_class_binary_archive" : "libs/serialization/test/test_contained_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_contained_class_xml_archive" : "libs/serialization/test/test_contained_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_contained_class_xml_warchive" : "libs/serialization/test/test_contained_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_cyclic_ptrs_text_archive" : "libs/serialization/test/test_cyclic_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_cyclic_ptrs_text_warchive" : "libs/serialization/test/test_cyclic_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_cyclic_ptrs_binary_archive" : "libs/serialization/test/test_cyclic_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_cyclic_ptrs_xml_archive" : "libs/serialization/test/test_cyclic_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_cyclic_ptrs_xml_warchive" : "libs/serialization/test/test_cyclic_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_delete_pointer_text_archive" : "libs/serialization/test/test_delete_pointer.cpp" +boost-test(RUN) "serialization/test_delete_pointer_text_warchive" : "libs/serialization/test/test_delete_pointer.cpp" +boost-test(RUN) "serialization/test_delete_pointer_binary_archive" : "libs/serialization/test/test_delete_pointer.cpp" +boost-test(RUN) "serialization/test_delete_pointer_xml_archive" : "libs/serialization/test/test_delete_pointer.cpp" +boost-test(RUN) "serialization/test_delete_pointer_xml_warchive" : "libs/serialization/test/test_delete_pointer.cpp" +boost-test(RUN) "serialization/test_deque_text_archive" : "libs/serialization/test/test_deque.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_deque_text_warchive" : "libs/serialization/test/test_deque.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_deque_binary_archive" : "libs/serialization/test/test_deque.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_deque_xml_archive" : "libs/serialization/test/test_deque.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_deque_xml_warchive" : "libs/serialization/test/test_deque.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_text_archive" : "libs/serialization/test/test_derived.cpp" +boost-test(RUN) "serialization/test_derived_text_warchive" : "libs/serialization/test/test_derived.cpp" +boost-test(RUN) "serialization/test_derived_binary_archive" : "libs/serialization/test/test_derived.cpp" +boost-test(RUN) "serialization/test_derived_xml_archive" : "libs/serialization/test/test_derived.cpp" +boost-test(RUN) "serialization/test_derived_xml_warchive" : "libs/serialization/test/test_derived.cpp" +boost-test(RUN) "serialization/test_derived_class_text_archive" : "libs/serialization/test/test_derived_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_text_warchive" : "libs/serialization/test/test_derived_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_binary_archive" : "libs/serialization/test/test_derived_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_xml_archive" : "libs/serialization/test/test_derived_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_xml_warchive" : "libs/serialization/test/test_derived_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_ptr_text_archive" : "libs/serialization/test/test_derived_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_ptr_text_warchive" : "libs/serialization/test/test_derived_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_ptr_binary_archive" : "libs/serialization/test/test_derived_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_ptr_xml_archive" : "libs/serialization/test/test_derived_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_derived_class_ptr_xml_warchive" : "libs/serialization/test/test_derived_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_diamond_text_archive" : "libs/serialization/test/test_diamond.cpp" +boost-test(RUN) "serialization/test_diamond_text_warchive" : "libs/serialization/test/test_diamond.cpp" +boost-test(RUN) "serialization/test_diamond_binary_archive" : "libs/serialization/test/test_diamond.cpp" +boost-test(RUN) "serialization/test_diamond_xml_archive" : "libs/serialization/test/test_diamond.cpp" +boost-test(RUN) "serialization/test_diamond_xml_warchive" : "libs/serialization/test/test_diamond.cpp" +boost-test(RUN) "serialization/test_diamond_complex_text_archive" : "libs/serialization/test/test_diamond_complex.cpp" +boost-test(RUN) "serialization/test_diamond_complex_text_warchive" : "libs/serialization/test/test_diamond_complex.cpp" +boost-test(RUN) "serialization/test_diamond_complex_binary_archive" : "libs/serialization/test/test_diamond_complex.cpp" +boost-test(RUN) "serialization/test_diamond_complex_xml_archive" : "libs/serialization/test/test_diamond_complex.cpp" +boost-test(RUN) "serialization/test_diamond_complex_xml_warchive" : "libs/serialization/test/test_diamond_complex.cpp" +boost-test(RUN) "serialization/test_forward_list_text_archive" : "libs/serialization/test/test_forward_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_text_warchive" : "libs/serialization/test/test_forward_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_binary_archive" : "libs/serialization/test/test_forward_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_xml_archive" : "libs/serialization/test/test_forward_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_xml_warchive" : "libs/serialization/test/test_forward_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_ptrs_text_archive" : "libs/serialization/test/test_forward_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_ptrs_text_warchive" : "libs/serialization/test/test_forward_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_ptrs_binary_archive" : "libs/serialization/test/test_forward_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_ptrs_xml_archive" : "libs/serialization/test/test_forward_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_forward_list_ptrs_xml_warchive" : "libs/serialization/test/test_forward_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_helper_support_text_archive" : "libs/serialization/test/test_helper_support.cpp" +boost-test(RUN) "serialization/test_helper_support_text_warchive" : "libs/serialization/test/test_helper_support.cpp" +boost-test(RUN) "serialization/test_helper_support_binary_archive" : "libs/serialization/test/test_helper_support.cpp" +boost-test(RUN) "serialization/test_helper_support_xml_archive" : "libs/serialization/test/test_helper_support.cpp" +boost-test(RUN) "serialization/test_helper_support_xml_warchive" : "libs/serialization/test/test_helper_support.cpp" +boost-test(RUN) "serialization/test_interrupts_text_archive" : "libs/serialization/test/test_interrupts.cpp" +boost-test(RUN) "serialization/test_interrupts_text_warchive" : "libs/serialization/test/test_interrupts.cpp" +boost-test(RUN) "serialization/test_interrupts_binary_archive" : "libs/serialization/test/test_interrupts.cpp" +boost-test(RUN) "serialization/test_interrupts_xml_archive" : "libs/serialization/test/test_interrupts.cpp" +boost-test(RUN) "serialization/test_interrupts_xml_warchive" : "libs/serialization/test/test_interrupts.cpp" +boost-test(RUN) "serialization/test_list_text_archive" : "libs/serialization/test/test_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_text_warchive" : "libs/serialization/test/test_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_binary_archive" : "libs/serialization/test/test_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_xml_archive" : "libs/serialization/test/test_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_xml_warchive" : "libs/serialization/test/test_list.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_ptrs_text_archive" : "libs/serialization/test/test_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_ptrs_text_warchive" : "libs/serialization/test/test_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_ptrs_binary_archive" : "libs/serialization/test/test_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_ptrs_xml_archive" : "libs/serialization/test/test_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_list_ptrs_xml_warchive" : "libs/serialization/test/test_list_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_text_archive" : "libs/serialization/test/test_map.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_text_warchive" : "libs/serialization/test/test_map.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_binary_archive" : "libs/serialization/test/test_map.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_xml_archive" : "libs/serialization/test/test_map.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_xml_warchive" : "libs/serialization/test/test_map.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_hashed_text_archive" : "libs/serialization/test/test_map_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_hashed_text_warchive" : "libs/serialization/test/test_map_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_hashed_binary_archive" : "libs/serialization/test/test_map_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_hashed_xml_archive" : "libs/serialization/test/test_map_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_hashed_xml_warchive" : "libs/serialization/test/test_map_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_unordered_text_archive" : "libs/serialization/test/test_map_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_unordered_text_warchive" : "libs/serialization/test/test_map_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_unordered_binary_archive" : "libs/serialization/test/test_map_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_unordered_xml_archive" : "libs/serialization/test/test_map_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_unordered_xml_warchive" : "libs/serialization/test/test_map_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_boost_unordered_text_archive" : "libs/serialization/test/test_map_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_boost_unordered_text_warchive" : "libs/serialization/test/test_map_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_boost_unordered_binary_archive" : "libs/serialization/test/test_map_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_boost_unordered_xml_archive" : "libs/serialization/test/test_map_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_map_boost_unordered_xml_warchive" : "libs/serialization/test/test_map_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_mi_text_archive" : "libs/serialization/test/test_mi.cpp" +boost-test(RUN) "serialization/test_mi_text_warchive" : "libs/serialization/test/test_mi.cpp" +boost-test(RUN) "serialization/test_mi_binary_archive" : "libs/serialization/test/test_mi.cpp" +boost-test(RUN) "serialization/test_mi_xml_archive" : "libs/serialization/test/test_mi.cpp" +boost-test(RUN) "serialization/test_mi_xml_warchive" : "libs/serialization/test/test_mi.cpp" +boost-test(RUN) "serialization/test_multiple_ptrs_text_archive" : "libs/serialization/test/test_multiple_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_multiple_ptrs_text_warchive" : "libs/serialization/test/test_multiple_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_multiple_ptrs_binary_archive" : "libs/serialization/test/test_multiple_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_multiple_ptrs_xml_archive" : "libs/serialization/test/test_multiple_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_multiple_ptrs_xml_warchive" : "libs/serialization/test/test_multiple_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_multiple_inheritance_text_archive" : "libs/serialization/test/test_multiple_inheritance.cpp" +boost-test(RUN) "serialization/test_multiple_inheritance_text_warchive" : "libs/serialization/test/test_multiple_inheritance.cpp" +boost-test(RUN) "serialization/test_multiple_inheritance_binary_archive" : "libs/serialization/test/test_multiple_inheritance.cpp" +boost-test(RUN) "serialization/test_multiple_inheritance_xml_archive" : "libs/serialization/test/test_multiple_inheritance.cpp" +boost-test(RUN) "serialization/test_multiple_inheritance_xml_warchive" : "libs/serialization/test/test_multiple_inheritance.cpp" +boost-test(RUN) "serialization/test_non_intrusive_text_archive" : "libs/serialization/test/test_non_intrusive.cpp" +boost-test(RUN) "serialization/test_non_intrusive_text_warchive" : "libs/serialization/test/test_non_intrusive.cpp" +boost-test(RUN) "serialization/test_non_intrusive_binary_archive" : "libs/serialization/test/test_non_intrusive.cpp" +boost-test(RUN) "serialization/test_non_intrusive_xml_archive" : "libs/serialization/test/test_non_intrusive.cpp" +boost-test(RUN) "serialization/test_non_intrusive_xml_warchive" : "libs/serialization/test/test_non_intrusive.cpp" +boost-test(RUN) "serialization/test_non_default_ctor_text_archive" : "libs/serialization/test/test_non_default_ctor.cpp" +boost-test(RUN) "serialization/test_non_default_ctor_text_warchive" : "libs/serialization/test/test_non_default_ctor.cpp" +boost-test(RUN) "serialization/test_non_default_ctor_binary_archive" : "libs/serialization/test/test_non_default_ctor.cpp" +boost-test(RUN) "serialization/test_non_default_ctor_xml_archive" : "libs/serialization/test/test_non_default_ctor.cpp" +boost-test(RUN) "serialization/test_non_default_ctor_xml_warchive" : "libs/serialization/test/test_non_default_ctor.cpp" +boost-test(RUN) "serialization/test_non_default_ctor2_text_archive" : "libs/serialization/test/test_non_default_ctor2.cpp" +boost-test(RUN) "serialization/test_non_default_ctor2_text_warchive" : "libs/serialization/test/test_non_default_ctor2.cpp" +boost-test(RUN) "serialization/test_non_default_ctor2_binary_archive" : "libs/serialization/test/test_non_default_ctor2.cpp" +boost-test(RUN) "serialization/test_non_default_ctor2_xml_archive" : "libs/serialization/test/test_non_default_ctor2.cpp" +boost-test(RUN) "serialization/test_non_default_ctor2_xml_warchive" : "libs/serialization/test/test_non_default_ctor2.cpp" +boost-test(RUN) "serialization/test_null_ptr_text_archive" : "libs/serialization/test/test_null_ptr.cpp" +boost-test(RUN) "serialization/test_null_ptr_text_warchive" : "libs/serialization/test/test_null_ptr.cpp" +boost-test(RUN) "serialization/test_null_ptr_binary_archive" : "libs/serialization/test/test_null_ptr.cpp" +boost-test(RUN) "serialization/test_null_ptr_xml_archive" : "libs/serialization/test/test_null_ptr.cpp" +boost-test(RUN) "serialization/test_null_ptr_xml_warchive" : "libs/serialization/test/test_null_ptr.cpp" +boost-test(RUN) "serialization/test_nvp_text_archive" : "libs/serialization/test/test_nvp.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_nvp_text_warchive" : "libs/serialization/test/test_nvp.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_nvp_binary_archive" : "libs/serialization/test/test_nvp.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_nvp_xml_archive" : "libs/serialization/test/test_nvp.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_nvp_xml_warchive" : "libs/serialization/test/test_nvp.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_object_text_archive" : "libs/serialization/test/test_object.cpp" +boost-test(RUN) "serialization/test_object_text_warchive" : "libs/serialization/test/test_object.cpp" +boost-test(RUN) "serialization/test_object_binary_archive" : "libs/serialization/test/test_object.cpp" +boost-test(RUN) "serialization/test_object_xml_archive" : "libs/serialization/test/test_object.cpp" +boost-test(RUN) "serialization/test_object_xml_warchive" : "libs/serialization/test/test_object.cpp" +boost-test(RUN) "serialization/test_primitive_text_archive" : "libs/serialization/test/test_primitive.cpp" +boost-test(RUN) "serialization/test_primitive_text_warchive" : "libs/serialization/test/test_primitive.cpp" +boost-test(RUN) "serialization/test_primitive_binary_archive" : "libs/serialization/test/test_primitive.cpp" +boost-test(RUN) "serialization/test_primitive_xml_archive" : "libs/serialization/test/test_primitive.cpp" +boost-test(RUN) "serialization/test_primitive_xml_warchive" : "libs/serialization/test/test_primitive.cpp" +boost-test(RUN) "serialization/test_priority_queue_text_archive" : "libs/serialization/test/test_priority_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_priority_queue_text_warchive" : "libs/serialization/test/test_priority_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_priority_queue_binary_archive" : "libs/serialization/test/test_priority_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_priority_queue_xml_archive" : "libs/serialization/test/test_priority_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_priority_queue_xml_warchive" : "libs/serialization/test/test_priority_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_queue_text_archive" : "libs/serialization/test/test_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_queue_text_warchive" : "libs/serialization/test/test_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_queue_binary_archive" : "libs/serialization/test/test_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_queue_xml_archive" : "libs/serialization/test/test_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_queue_xml_warchive" : "libs/serialization/test/test_queue.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_recursion_text_archive" : "libs/serialization/test/test_recursion.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_recursion_text_warchive" : "libs/serialization/test/test_recursion.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_recursion_binary_archive" : "libs/serialization/test/test_recursion.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_recursion_xml_archive" : "libs/serialization/test/test_recursion.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_recursion_xml_warchive" : "libs/serialization/test/test_recursion.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_registered_text_archive" : "libs/serialization/test/test_registered.cpp" +boost-test(RUN) "serialization/test_registered_text_warchive" : "libs/serialization/test/test_registered.cpp" +boost-test(RUN) "serialization/test_registered_binary_archive" : "libs/serialization/test/test_registered.cpp" +boost-test(RUN) "serialization/test_registered_xml_archive" : "libs/serialization/test/test_registered.cpp" +boost-test(RUN) "serialization/test_registered_xml_warchive" : "libs/serialization/test/test_registered.cpp" +boost-test(RUN) "serialization/test_set_text_archive" : "libs/serialization/test/test_set.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_text_warchive" : "libs/serialization/test/test_set.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_binary_archive" : "libs/serialization/test/test_set.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_xml_archive" : "libs/serialization/test/test_set.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_xml_warchive" : "libs/serialization/test/test_set.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_hashed_text_archive" : "libs/serialization/test/test_set_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_hashed_text_warchive" : "libs/serialization/test/test_set_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_hashed_binary_archive" : "libs/serialization/test/test_set_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_hashed_xml_archive" : "libs/serialization/test/test_set_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_hashed_xml_warchive" : "libs/serialization/test/test_set_hashed.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_unordered_text_archive" : "libs/serialization/test/test_set_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_unordered_text_warchive" : "libs/serialization/test/test_set_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_unordered_binary_archive" : "libs/serialization/test/test_set_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_unordered_xml_archive" : "libs/serialization/test/test_set_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_unordered_xml_warchive" : "libs/serialization/test/test_set_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_boost_unordered_text_archive" : "libs/serialization/test/test_set_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_boost_unordered_text_warchive" : "libs/serialization/test/test_set_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_boost_unordered_binary_archive" : "libs/serialization/test/test_set_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_boost_unordered_xml_archive" : "libs/serialization/test/test_set_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_set_boost_unordered_xml_warchive" : "libs/serialization/test/test_set_boost_unordered.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_text_archive" : "libs/serialization/test/test_simple_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_text_warchive" : "libs/serialization/test/test_simple_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_binary_archive" : "libs/serialization/test/test_simple_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_xml_archive" : "libs/serialization/test/test_simple_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_xml_warchive" : "libs/serialization/test/test_simple_class.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_ptr_text_archive" : "libs/serialization/test/test_simple_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_ptr_text_warchive" : "libs/serialization/test/test_simple_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_ptr_binary_archive" : "libs/serialization/test/test_simple_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_ptr_xml_archive" : "libs/serialization/test/test_simple_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_simple_class_ptr_xml_warchive" : "libs/serialization/test/test_simple_class_ptr.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_text_archive" : "libs/serialization/test/test_slist.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_text_warchive" : "libs/serialization/test/test_slist.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_binary_archive" : "libs/serialization/test/test_slist.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_xml_archive" : "libs/serialization/test/test_slist.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_xml_warchive" : "libs/serialization/test/test_slist.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_ptrs_text_archive" : "libs/serialization/test/test_slist_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_ptrs_text_warchive" : "libs/serialization/test/test_slist_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_ptrs_binary_archive" : "libs/serialization/test/test_slist_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_ptrs_xml_archive" : "libs/serialization/test/test_slist_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_slist_ptrs_xml_warchive" : "libs/serialization/test/test_slist_ptrs.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_split_text_archive" : "libs/serialization/test/test_split.cpp" +boost-test(RUN) "serialization/test_split_text_warchive" : "libs/serialization/test/test_split.cpp" +boost-test(RUN) "serialization/test_split_binary_archive" : "libs/serialization/test/test_split.cpp" +boost-test(RUN) "serialization/test_split_xml_archive" : "libs/serialization/test/test_split.cpp" +boost-test(RUN) "serialization/test_split_xml_warchive" : "libs/serialization/test/test_split.cpp" +boost-test(RUN) "serialization/test_stack_text_archive" : "libs/serialization/test/test_stack.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_stack_text_warchive" : "libs/serialization/test/test_stack.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_stack_binary_archive" : "libs/serialization/test/test_stack.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_stack_xml_archive" : "libs/serialization/test/test_stack.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_stack_xml_warchive" : "libs/serialization/test/test_stack.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_tracking_text_archive" : "libs/serialization/test/test_tracking.cpp" +boost-test(RUN) "serialization/test_tracking_text_warchive" : "libs/serialization/test/test_tracking.cpp" +boost-test(RUN) "serialization/test_tracking_binary_archive" : "libs/serialization/test/test_tracking.cpp" +boost-test(RUN) "serialization/test_tracking_xml_archive" : "libs/serialization/test/test_tracking.cpp" +boost-test(RUN) "serialization/test_tracking_xml_warchive" : "libs/serialization/test/test_tracking.cpp" +boost-test(RUN) "serialization/test_unregistered_text_archive" : "libs/serialization/test/test_unregistered.cpp" +boost-test(RUN) "serialization/test_unregistered_text_warchive" : "libs/serialization/test/test_unregistered.cpp" +boost-test(RUN) "serialization/test_unregistered_binary_archive" : "libs/serialization/test/test_unregistered.cpp" +boost-test(RUN) "serialization/test_unregistered_xml_archive" : "libs/serialization/test/test_unregistered.cpp" +boost-test(RUN) "serialization/test_unregistered_xml_warchive" : "libs/serialization/test/test_unregistered.cpp" +boost-test(RUN) "serialization/test_unique_ptr_text_archive" : "libs/serialization/test/test_unique_ptr.cpp" +boost-test(RUN) "serialization/test_unique_ptr_text_warchive" : "libs/serialization/test/test_unique_ptr.cpp" +boost-test(RUN) "serialization/test_unique_ptr_binary_archive" : "libs/serialization/test/test_unique_ptr.cpp" +boost-test(RUN) "serialization/test_unique_ptr_xml_archive" : "libs/serialization/test/test_unique_ptr.cpp" +boost-test(RUN) "serialization/test_unique_ptr_xml_warchive" : "libs/serialization/test/test_unique_ptr.cpp" +boost-test(RUN) "serialization/test_valarray_text_archive" : "libs/serialization/test/test_valarray.cpp" +boost-test(RUN) "serialization/test_valarray_text_warchive" : "libs/serialization/test/test_valarray.cpp" +boost-test(RUN) "serialization/test_valarray_binary_archive" : "libs/serialization/test/test_valarray.cpp" +boost-test(RUN) "serialization/test_valarray_xml_archive" : "libs/serialization/test/test_valarray.cpp" +boost-test(RUN) "serialization/test_valarray_xml_warchive" : "libs/serialization/test/test_valarray.cpp" +boost-test(RUN) "serialization/test_variant_text_archive" : "libs/serialization/test/test_variant.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_variant_text_warchive" : "libs/serialization/test/test_variant.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_variant_binary_archive" : "libs/serialization/test/test_variant.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_variant_xml_archive" : "libs/serialization/test/test_variant.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_variant_xml_warchive" : "libs/serialization/test/test_variant.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_vector_text_archive" : "libs/serialization/test/test_vector.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_vector_text_warchive" : "libs/serialization/test/test_vector.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_vector_binary_archive" : "libs/serialization/test/test_vector.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_vector_xml_archive" : "libs/serialization/test/test_vector.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_vector_xml_warchive" : "libs/serialization/test/test_vector.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_new_operator_text_archive" : "libs/serialization/test/test_new_operator.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_new_operator_text_warchive" : "libs/serialization/test/test_new_operator.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_new_operator_binary_archive" : "libs/serialization/test/test_new_operator.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_new_operator_xml_archive" : "libs/serialization/test/test_new_operator.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_new_operator_xml_warchive" : "libs/serialization/test/test_new_operator.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_optional_text_archive" : "libs/serialization/test/test_optional.cpp" +boost-test(RUN) "serialization/test_optional_text_warchive" : "libs/serialization/test/test_optional.cpp" +boost-test(RUN) "serialization/test_optional_binary_archive" : "libs/serialization/test/test_optional.cpp" +boost-test(RUN) "serialization/test_optional_xml_archive" : "libs/serialization/test/test_optional.cpp" +boost-test(RUN) "serialization/test_optional_xml_warchive" : "libs/serialization/test/test_optional.cpp" +boost-test(RUN) "serialization/test_shared_ptr_text_archive" : "libs/serialization/test/test_shared_ptr.cpp" +boost-test(RUN) "serialization/test_shared_ptr_text_warchive" : "libs/serialization/test/test_shared_ptr.cpp" +boost-test(RUN) "serialization/test_shared_ptr_binary_archive" : "libs/serialization/test/test_shared_ptr.cpp" +boost-test(RUN) "serialization/test_shared_ptr_xml_archive" : "libs/serialization/test/test_shared_ptr.cpp" +boost-test(RUN) "serialization/test_shared_ptr_xml_warchive" : "libs/serialization/test/test_shared_ptr.cpp" +boost-test(RUN) "serialization/test_shared_ptr_multi_base_text_archive" : "libs/serialization/test/test_shared_ptr_multi_base.cpp" +boost-test(RUN) "serialization/test_shared_ptr_multi_base_text_warchive" : "libs/serialization/test/test_shared_ptr_multi_base.cpp" +boost-test(RUN) "serialization/test_shared_ptr_multi_base_binary_archive" : "libs/serialization/test/test_shared_ptr_multi_base.cpp" +boost-test(RUN) "serialization/test_shared_ptr_multi_base_xml_archive" : "libs/serialization/test/test_shared_ptr_multi_base.cpp" +boost-test(RUN) "serialization/test_shared_ptr_multi_base_xml_warchive" : "libs/serialization/test/test_shared_ptr_multi_base.cpp" +boost-test(RUN) "serialization/test_shared_ptr_132_text_archive" : "libs/serialization/test/test_shared_ptr_132.cpp" +boost-test(RUN) "serialization/test_shared_ptr_132_text_warchive" : "libs/serialization/test/test_shared_ptr_132.cpp" +boost-test(RUN) "serialization/test_shared_ptr_132_binary_archive" : "libs/serialization/test/test_shared_ptr_132.cpp" +boost-test(RUN) "serialization/test_shared_ptr_132_xml_archive" : "libs/serialization/test/test_shared_ptr_132.cpp" +boost-test(RUN) "serialization/test_shared_ptr_132_xml_warchive" : "libs/serialization/test/test_shared_ptr_132.cpp" +boost-test(RUN) "serialization/test_polymorphic_polymorphic_text_archive" : "libs/serialization/test/test_polymorphic.cpp" "libs/serialization/test/test_polymorphic_A.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_polymorphic_polymorphic_text_warchive" : "libs/serialization/test/test_polymorphic.cpp" "libs/serialization/test/test_polymorphic_A.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_polymorphic_polymorphic_binary_archive" : "libs/serialization/test/test_polymorphic.cpp" "libs/serialization/test/test_polymorphic_A.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_polymorphic_polymorphic_xml_archive" : "libs/serialization/test/test_polymorphic.cpp" "libs/serialization/test/test_polymorphic_A.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_polymorphic_polymorphic_xml_warchive" : "libs/serialization/test/test_polymorphic.cpp" "libs/serialization/test/test_polymorphic_A.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_polymorphic2_polymorphic_text_archive" : "libs/serialization/test/test_polymorphic2.cpp" "libs/serialization/test/test_polymorphic2imp.cpp" +boost-test(RUN) "serialization/test_polymorphic2_polymorphic_text_warchive" : "libs/serialization/test/test_polymorphic2.cpp" "libs/serialization/test/test_polymorphic2imp.cpp" +boost-test(RUN) "serialization/test_polymorphic2_polymorphic_binary_archive" : "libs/serialization/test/test_polymorphic2.cpp" "libs/serialization/test/test_polymorphic2imp.cpp" +boost-test(RUN) "serialization/test_polymorphic2_polymorphic_xml_archive" : "libs/serialization/test/test_polymorphic2.cpp" "libs/serialization/test/test_polymorphic2imp.cpp" +boost-test(RUN) "serialization/test_polymorphic2_polymorphic_xml_warchive" : "libs/serialization/test/test_polymorphic2.cpp" "libs/serialization/test/test_polymorphic2imp.cpp" +boost-test(RUN) "serialization/test_p_helper_polymorphic_text_archive" : "libs/serialization/test/test_p_helper.cpp" +boost-test(RUN) "serialization/test_p_helper_polymorphic_text_warchive" : "libs/serialization/test/test_p_helper.cpp" +boost-test(RUN) "serialization/test_p_helper_polymorphic_binary_archive" : "libs/serialization/test/test_p_helper.cpp" +boost-test(RUN) "serialization/test_p_helper_polymorphic_xml_archive" : "libs/serialization/test/test_p_helper.cpp" +boost-test(RUN) "serialization/test_p_helper_polymorphic_xml_warchive" : "libs/serialization/test/test_p_helper.cpp" +boost-test(RUN) "serialization/test_dll_exported_polymorphic_text_archive" : "libs/serialization/test/test_dll_exported.cpp" "libs/serialization/test/polymorphic_derived1.cpp" +boost-test(RUN) "serialization/test_dll_exported_polymorphic_text_warchive" : "libs/serialization/test/test_dll_exported.cpp" "libs/serialization/test/polymorphic_derived1.cpp" +boost-test(RUN) "serialization/test_dll_exported_polymorphic_binary_archive" : "libs/serialization/test/test_dll_exported.cpp" "libs/serialization/test/polymorphic_derived1.cpp" +boost-test(RUN) "serialization/test_dll_exported_polymorphic_xml_archive" : "libs/serialization/test/test_dll_exported.cpp" "libs/serialization/test/polymorphic_derived1.cpp" +boost-test(RUN) "serialization/test_dll_exported_polymorphic_xml_warchive" : "libs/serialization/test/test_dll_exported.cpp" "libs/serialization/test/polymorphic_derived1.cpp" +boost-test(RUN) "serialization/test_no_rtti_polymorphic_text_archive" : "libs/serialization/test/test_no_rtti.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_no_rtti_polymorphic_text_warchive" : "libs/serialization/test/test_no_rtti.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_no_rtti_polymorphic_binary_archive" : "libs/serialization/test/test_no_rtti.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_no_rtti_polymorphic_xml_archive" : "libs/serialization/test/test_no_rtti.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_no_rtti_polymorphic_xml_warchive" : "libs/serialization/test/test_no_rtti.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_exported_polymorphic_text_archive" : "libs/serialization/test/test_exported.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_exported_polymorphic_text_warchive" : "libs/serialization/test/test_exported.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_exported_polymorphic_binary_archive" : "libs/serialization/test/test_exported.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_exported_polymorphic_xml_archive" : "libs/serialization/test/test_exported.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(RUN) "serialization/test_exported_polymorphic_xml_warchive" : "libs/serialization/test/test_exported.cpp" "libs/serialization/test/polymorphic_base.cpp" "libs/serialization/test/polymorphic_derived1.cpp" "libs/serialization/test/polymorphic_derived2.cpp" +boost-test(COMPILE) "serialization/test_strong_typedef" : "libs/serialization/test/test_strong_typedef.cpp" +boost-test(RUN) "serialization/test_inclusion" : "libs/serialization/test/test_inclusion.cpp" +boost-test(RUN) "serialization/test_inclusion2" : "libs/serialization/test/test_inclusion2.cpp" +boost-test(RUN) "serialization/test_dll_simple" : "libs/serialization/test/test_dll_simple.cpp" +boost-test(RUN) "serialization/test_private_ctor" : "libs/serialization/test/test_private_ctor.cpp" +boost-test(RUN) "serialization/test_reset_object_address" : "libs/serialization/test/test_reset_object_address.cpp" "libs/serialization/test/A.cpp" +boost-test(RUN) "serialization/test_void_cast" : "libs/serialization/test/test_void_cast.cpp" +boost-test(RUN) "serialization/test_mult_archive_types" : "libs/serialization/test/test_mult_archive_types.cpp" +boost-test(RUN) "serialization/test_iterators" : "libs/serialization/test/test_iterators.cpp" +boost-test(RUN) "serialization/test_iterators_base64" : "libs/serialization/test/test_iterators_base64.cpp" +boost-test(RUN) "serialization/test_smart_cast" : "libs/serialization/test/test_smart_cast.cpp" +boost-test(RUN) "serialization/test_codecvt_null" : "libs/serialization/test/test_codecvt_null.cpp" +boost-test(RUN) "serialization/test_singleton" : "libs/serialization/test/test_singleton.cpp" +boost-test(RUN) "serialization/test_singleton_inherited" : "libs/serialization/test/test_singleton_inherited.cpp" +boost-test(RUN) "serialization/test_singleton_plain" : "libs/serialization/test/test_singleton_plain.cpp" +boost-test(COMPILE_FAIL) "serialization/test_not_serializable" : "libs/serialization/test/test_not_serializable.cpp" +boost-test(COMPILE_FAIL) "serialization/test_traits_fail" : "libs/serialization/test/test_traits_fail.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail1" : "libs/serialization/test/test_const_load_fail1.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail2" : "libs/serialization/test/test_const_load_fail2.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail3" : "libs/serialization/test/test_const_load_fail3.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail1_nvp" : "libs/serialization/test/test_const_load_fail1_nvp.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail2_nvp" : "libs/serialization/test/test_const_load_fail2_nvp.cpp" +boost-test(COMPILE_FAIL) "serialization/test_const_load_fail3_nvp" : "libs/serialization/test/test_const_load_fail3_nvp.cpp" +boost-test(COMPILE_FAIL) "serialization/test_check" : "libs/serialization/test/test_check.cpp" +boost-test(COMPILE) "serialization/test_static_warning" : "libs/serialization/test/test_static_warning.cpp" +boost-test(COMPILE) "serialization/test_const_save_warn1" : "libs/serialization/test/test_const_save_warn1.cpp" +boost-test(COMPILE) "serialization/test_const_save_warn2" : "libs/serialization/test/test_const_save_warn2.cpp" +boost-test(COMPILE) "serialization/test_const_save_warn3" : "libs/serialization/test/test_const_save_warn3.cpp" +boost-test(COMPILE) "serialization/test_traits_pass" : "libs/serialization/test/test_traits_pass.cpp" +boost-test(COMPILE) "serialization/test_const_pass" : "libs/serialization/test/test_const_pass.cpp" +...patience... +...patience... +...found 6867 targets... +...updating 1433 targets... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/binary_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/binary_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/text_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/text_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_text_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_text_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_binary_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_binary_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_xml_iarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_xml_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/xml_oarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/xml_iarchive.o +clang-darwin.link.dll ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/libboost_serialization.dylib +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/text_wiarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/text_woarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_text_wiarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_text_woarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_xml_wiarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/xml_woarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/xml_wiarchive.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_xml_woarchive.o +clang-darwin.link.dll ../../../bin.v2/libs/serialization/build/clang-darwin-03/debug/threading-multi/visibility-hidden/libboost_wserialization.dylib +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_array_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_boost_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_boost_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_boost_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_boost_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_boost_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_boost_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_boost_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_boost_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_boost_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_boost_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_boost_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_boost_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_boost_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_boost_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_boost_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_boost_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_boost_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_boost_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_boost_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_boost_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_boost_array_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_native_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_native_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_native_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_native_array_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_native_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_native_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_native_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_native_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_native_array_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_native_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_native_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_native_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_native_array_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_native_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_native_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_native_array_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_binary_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_binary_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_binary_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_binary_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_binary_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_binary_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_binary_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_binary_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_binary_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_native_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_binary_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_binary_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_binary_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_native_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_native_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_native_array_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_native_array_xml_warchive.test +...on 100th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_binary_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_binary_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_binary_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_binary_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_binary_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_binary_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_binary_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_binary_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_binary_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_save_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_save_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_save_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_save_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_save_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_save_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_save_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_save_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_save_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_save_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_binary_archive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_save_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_save_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_save_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_save_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_load_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_load_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_load_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_load_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_load_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_load_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_load_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_warchive.run +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_load_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load.o +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_load_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_load_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_load_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_load_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_class_info_load_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_class_info_load_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_bitset_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_bitset_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_bitset_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_bitset_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_bitset_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_bitset_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_bitset_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_bitset_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_bitset_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_bitset_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_binary_archive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_bitset_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_bitset_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_bitset_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_bitset_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_bitset_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_bitset_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_bitset_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_bitset_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_bitset_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_bitset_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_bitset_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_archive.run +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex.o +**passed** ../../../bin.v2/libs/serialization/test/test_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_warchive.run +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex.o +**passed** ../../../bin.v2/libs/serialization/test/test_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_complex_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_contained_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_contained_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_contained_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_contained_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_contained_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_contained_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_contained_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_contained_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_contained_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_contained_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_contained_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_contained_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_binary_archive.test +...on 200th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_contained_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_contained_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_contained_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_contained_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_contained_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_contained_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_contained_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_contained_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_contained_class_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_cyclic_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_cyclic_ptrs_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_delete_pointer_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_delete_pointer_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_delete_pointer_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_delete_pointer_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_delete_pointer_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_delete_pointer_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_delete_pointer_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_deque_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_deque_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_deque_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_deque_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_deque_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_deque_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_deque_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_deque_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_deque_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_deque_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_deque_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_deque_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_deque_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_deque_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_deque_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_deque_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_deque_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_deque_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_deque_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_deque_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_deque_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_archive +...on 300th target... +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_derived_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_derived_class_ptr_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_complex_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_complex_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_diamond_complex_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_diamond_complex_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_archive.test +...on 400th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_forward_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_forward_list_ptrs_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_helper_support_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_helper_support_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_helper_support_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_helper_support_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_helper_support_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_helper_support_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_helper_support_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_helper_support_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_helper_support_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_helper_support_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_helper_support_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_helper_support_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_helper_support_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_helper_support_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_helper_support_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_helper_support_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_interrupts_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_interrupts_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_interrupts_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_interrupts_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_helper_support_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_interrupts_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_helper_support_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_helper_support_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_helper_support_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_helper_support_xml_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_interrupts_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_interrupts_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_interrupts_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_interrupts_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_interrupts_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_interrupts_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_interrupts_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_interrupts_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_interrupts_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_interrupts_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_interrupts_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_interrupts_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_interrupts_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_interrupts_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_interrupts_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_interrupts_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_list_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_list_ptrs_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_binary_archive.test +...on 500th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mi_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mi_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mi_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_mi_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_map_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_map_boost_unordered_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mi_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mi_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mi_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_mi_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mi_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mi_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mi_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mi_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_mi_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mi_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mi_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_mi_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mi_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mi_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mi_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_mi_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mi_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_ptrs_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_ptrs_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_multiple_inheritance_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_multiple_inheritance_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_intrusive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_intrusive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_intrusive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_intrusive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_intrusive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_binary_archive.test +...on 600th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_intrusive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_intrusive_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_non_default_ctor2_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_non_default_ctor2_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_null_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_null_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_null_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_null_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_null_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_null_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_null_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_null_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_null_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_null_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_null_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_null_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_null_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_null_ptr_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_nvp_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_nvp_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_nvp_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_nvp_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_nvp_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_nvp_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_nvp_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_nvp_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_nvp_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_nvp_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_nvp_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_nvp_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_nvp_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_nvp_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_nvp_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_nvp_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_object_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_object_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_object_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_object_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_object_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_object_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_object_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_object_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_nvp_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_object_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_nvp_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_nvp_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_nvp_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_nvp_xml_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_object_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_object_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_object_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_binary_archive.test +...on 700th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_object_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_object_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_object_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_object_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_object_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_object_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_object_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_object_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_object_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_primitive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_primitive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_primitive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_primitive_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_primitive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_primitive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_primitive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_primitive_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_primitive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_primitive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_primitive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_primitive_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_primitive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_primitive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_primitive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_primitive_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_primitive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_primitive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_primitive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_primitive_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_primitive_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_priority_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_priority_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_priority_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_priority_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_priority_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_priority_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_warchive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_priority_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_priority_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_priority_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_priority_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_priority_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_priority_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_priority_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_priority_queue_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_queue_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_queue_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_queue_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_queue_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_queue_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_queue_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_recursion_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_recursion_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_recursion_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_recursion_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_recursion_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_recursion_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_recursion_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_recursion_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_recursion_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_recursion_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_recursion_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_recursion_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_recursion_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_recursion_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_recursion_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_recursion_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_recursion_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_recursion_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_recursion_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_recursion_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_recursion_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_registered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_registered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_registered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_registered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_registered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_registered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_registered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_registered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_registered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_registered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_registered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_binary_archive +...on 800th target... +testing.capture-output ../../../bin.v2/libs/serialization/test/test_registered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_registered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_registered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_registered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_registered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_registered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_registered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_registered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_registered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_registered_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_archive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_set_boost_unordered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_set_boost_unordered_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_simple_class_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_simple_class_ptr_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_split_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_split_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_split_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_split_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_split_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_split_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_split_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_split_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_split_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_split_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_split_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_binary_archive +...on 900th target... +testing.capture-output ../../../bin.v2/libs/serialization/test/test_split_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_split_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_split_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_split_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_split_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_split_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_split_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_split_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_split_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_split_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_stack_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_stack_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_stack_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_stack_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_stack_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_stack_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_stack_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_stack_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_stack_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_stack_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_stack_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_stack_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_stack_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_stack_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_stack_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_stack_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_stack_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_stack_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_stack_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_stack_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_stack_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_tracking_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_tracking_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_tracking_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_tracking_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_tracking_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_tracking_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_tracking_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_tracking_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_tracking_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_tracking_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_tracking_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_tracking_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_tracking_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_tracking_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_tracking_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_tracking_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_tracking_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_tracking_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_tracking_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_tracking_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_tracking_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unregistered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unregistered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unregistered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unregistered_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unregistered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unregistered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unregistered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unregistered_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unregistered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unregistered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_archive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unregistered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unregistered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unregistered_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unregistered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unregistered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unregistered_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unregistered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unregistered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unregistered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unregistered_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unregistered_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unique_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unique_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unique_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unique_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unique_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_unique_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_unique_ptr_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_valarray_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_valarray_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_valarray_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_archive.run +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_valarray_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray.o +**passed** ../../../bin.v2/libs/serialization/test/test_valarray_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_valarray_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_valarray_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_valarray_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_valarray_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_valarray_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_valarray_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_binary_archive +...on 1000th target... +testing.capture-output ../../../bin.v2/libs/serialization/test/test_valarray_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_valarray_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_binary_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_valarray_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_valarray_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_valarray_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_valarray_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_valarray_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_valarray_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_valarray_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_valarray_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_variant_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_variant_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_variant_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_variant_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_variant_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_variant_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_warchive +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_variant_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_variant_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_variant_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_text_warchive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_variant_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_variant_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_variant_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_variant_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_variant_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_variant_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_variant_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_vector_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_vector_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_vector_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_vector_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_vector_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_vector_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_vector_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_vector_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_vector_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_vector_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_vector_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_vector_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_variant_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_variant_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_variant_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_variant_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_variant_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_vector_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_vector_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_vector_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_vector_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_vector_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_vector_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_vector_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_vector_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_vector_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_new_operator_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_new_operator_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_new_operator_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_new_operator_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_new_operator_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_new_operator_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_new_operator_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_new_operator_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_new_operator_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_new_operator_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_new_operator_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_new_operator_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_new_operator_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_new_operator_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_new_operator_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_new_operator_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_new_operator_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_new_operator_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_new_operator_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_new_operator_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_new_operator_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_optional_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_optional_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_optional_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_optional_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_optional_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_optional_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_optional_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_optional_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_optional_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_optional_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_optional_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_optional_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_optional_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_optional_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_optional_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_optional_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_optional_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_optional_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_optional_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_optional_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_optional_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_binary_archive.test +...on 1100th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_archive.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_multi_base_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_multi_base_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_shared_ptr_132_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_shared_ptr_132_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_A.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_A.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_A.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_A.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_A.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2imp.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2imp.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2imp.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2imp.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_archive.test +...on 1200th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2imp.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_polymorphic2_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_polymorphic2_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported.o +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/dll_polymorphic_derived2.o +In file included from dll_polymorphic_derived2.cpp:13: +In file included from ./polymorphic_derived2.cpp:15: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from dll_polymorphic_derived2.cpp:13: +In file included from ./polymorphic_derived2.cpp:16: +./polymorphic_derived2.hpp:32:13: warning: polymorphic_derived2 exported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 exported") + ^ +2 warnings generated. +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/dll_polymorphic_base.o +In file included from dll_polymorphic_base.cpp:12: +In file included from ./polymorphic_base.cpp:13: +./polymorphic_base.hpp:32:13: warning: polymorphic_base exported [-W#pragma-messages] + #pragma message ("polymorphic_base exported") + ^ +1 warning generated. +clang-darwin.link.dll ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/libdll_polymorphic_base.dylib +clang-darwin.link.dll ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/libdll_polymorphic_derived2.dylib +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_p_helper_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_p_helper_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported.o +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported.o +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported.o +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported.o +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_exported_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_archive.test +...on 1300th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_no_rtti_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_no_rtti_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_text_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_binary_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_binary_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_binary_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_archive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_archive.run +**passed** ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_archive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_base.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived1.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_inclusion.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_inclusion.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion +testing.capture-output ../../../bin.v2/libs/serialization/test/test_inclusion.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion.run +**passed** ../../../bin.v2/libs/serialization/test/test_inclusion.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/polymorphic_derived2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_warchive +testing.capture-output ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_warchive.run +**passed** ../../../bin.v2/libs/serialization/test/test_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_exported_polymorphic_xml_warchive.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_inclusion2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion2.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_inclusion2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion2 +testing.capture-output ../../../bin.v2/libs/serialization/test/test_inclusion2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion2.run +**passed** ../../../bin.v2/libs/serialization/test/test_inclusion2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_inclusion2.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_private_ctor.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_private_ctor.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_private_ctor.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_private_ctor +testing.capture-output ../../../bin.v2/libs/serialization/test/test_private_ctor.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_private_ctor.run +**passed** ../../../bin.v2/libs/serialization/test/test_private_ctor.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_private_ctor.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/dll_a.o +In file included from dll_a.cpp:14: +./A.hpp:40:13: warning: A exported [-W#pragma-messages] + #pragma message ("A exported") + ^ +1 warning generated. +clang-darwin.link.dll ../../../bin.v2/libs/serialization/test/clang-darwin-03/debug/threading-multi/visibility-hidden/libdll_a.dylib +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_simple.o +In file included from test_dll_simple.cpp:33: +./A.hpp:37:13: warning: A imported [-W#pragma-messages] + #pragma message("A imported") + ^ +1 warning generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_simple +testing.capture-output ../../../bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_simple.run +**passed** ../../../bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_dll_simple.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_void_cast.o +test_void_cast.cpp:18:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_void_cast.cpp:23:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_void_cast.cpp:28:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +test_void_cast.cpp:33:10: warning: private field 'd' is not used [-Wunused-private-field] + char d[32]; + ^ +4 warnings generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_void_cast +testing.capture-output ../../../bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_void_cast.run +**passed** ../../../bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_void_cast.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_mult_archive_types.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mult_archive_types.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_mult_archive_types.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mult_archive_types +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_reset_object_address.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_reset_object_address.o +testing.capture-output ../../../bin.v2/libs/serialization/test/test_mult_archive_types.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mult_archive_types.run +**passed** ../../../bin.v2/libs/serialization/test/test_mult_archive_types.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_mult_archive_types.test +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_reset_object_address.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_reset_object_address +testing.capture-output ../../../bin.v2/libs/serialization/test/test_reset_object_address.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_reset_object_address.run +**passed** ../../../bin.v2/libs/serialization/test/test_reset_object_address.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_reset_object_address.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_iterators.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_iterators.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators +testing.capture-output ../../../bin.v2/libs/serialization/test/test_iterators.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators.run +**passed** ../../../bin.v2/libs/serialization/test/test_iterators.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_iterators_base64.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators_base64.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_iterators_base64.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators_base64 +testing.capture-output ../../../bin.v2/libs/serialization/test/test_iterators_base64.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators_base64.run +**passed** ../../../bin.v2/libs/serialization/test/test_iterators_base64.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_iterators_base64.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_smart_cast.o +test_smart_cast.cpp:20:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_smart_cast.cpp:25:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_smart_cast.cpp:35:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +test_smart_cast.cpp:122:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_smart_cast.cpp:129:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_smart_cast.cpp:141:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +6 warnings generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_smart_cast +testing.capture-output ../../../bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_smart_cast.run +**passed** ../../../bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_smart_cast.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_codecvt_null.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_codecvt_null.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_codecvt_null.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_codecvt_null +testing.capture-output ../../../bin.v2/libs/serialization/test/test_codecvt_null.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_codecvt_null.run +**passed** ../../../bin.v2/libs/serialization/test/test_codecvt_null.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_codecvt_null.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_singleton.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton.o +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_singleton.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton +testing.capture-output ../../../bin.v2/libs/serialization/test/test_singleton.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton.run +**passed** ../../../bin.v2/libs/serialization/test/test_singleton.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_inherited.o +test_singleton_inherited.cpp:26:32: warning: unknown warning group '-Wterminate', ignored [-Wunknown-warning-option] +#pragma GCC diagnostic ignored "-Wterminate" + ^ +1 warning generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_inherited +testing.capture-output ../../../bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_inherited.run +**passed** ../../../bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_inherited.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_plain.o +test_singleton_plain.cpp:25:32: warning: unknown warning group '-Wterminate', ignored [-Wunknown-warning-option] +#pragma GCC diagnostic ignored "-Wterminate" + ^ +1 warning generated. +clang-darwin.link ../../../bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_plain +testing.capture-output ../../../bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_plain.run +**passed** ../../../bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_singleton_plain.test +...on 1400th target... +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_not_serializable.o +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:40: +In file included from ../../../boost/serialization/extended_type_info_typeid.hpp:37: +../../../boost/serialization/access.hpp:116:11: error: no member named 'serialize' in 'A' + t.serialize(ar, file_version); + ~ ^ +../../../boost/serialization/serialization.hpp:68:13: note: in instantiation of function template specialization 'boost::serialization::access::serialize<boost::archive::text_oarchive, A>' requested here + access::serialize(ar, t, static_cast<unsigned int>(file_version)); + ^ +../../../boost/serialization/serialization.hpp:126:5: note: in instantiation of function template specialization 'boost::serialization::serialize<boost::archive::text_oarchive, A>' requested here + serialize(ar, t, v); + ^ +../../../boost/archive/detail/oserializer.hpp:153:27: note: in instantiation of function template specialization 'boost::serialization::serialize_adl<boost::archive::text_oarchive, A>' requested here + boost::serialization::serialize_adl( + ^ +../../../boost/serialization/singleton.hpp:147:5: note: in instantiation of member function 'boost::archive::detail::oserializer<boost::archive::text_oarchive, A>::save_object_data' requested here + singleton_wrapper(){ + ^ +../../../boost/serialization/singleton.hpp:171:47: note: in instantiation of member function 'boost::serialization::detail::singleton_wrapper<boost::archive::detail::oserializer<boost::archive::text_oarchive, A> >::singleton_wrapper' requested here + static detail::singleton_wrapper< T > t; + ^ +../../../boost/serialization/singleton.hpp:196:16: note: (skipping 15 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return get_instance(); + ^ +../../../boost/archive/detail/oserializer.hpp:539:12: note: in instantiation of function template specialization 'boost::archive::detail::save_non_pointer_type<boost::archive::text_oarchive>::invoke<boost::serialization::nvp<A> >' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_oarchive.hpp:71:18: note: in instantiation of function template specialization 'boost::archive::save<boost::archive::text_oarchive, const boost::serialization::nvp<A> >' requested here + archive::save(* this->This(), t); + ^ +../../../boost/archive/basic_text_oarchive.hpp:83:39: note: in instantiation of function template specialization 'boost::archive::detail::common_oarchive<boost::archive::text_oarchive>::save_override<const boost::serialization::nvp<A> >' requested here + this->detail_common_oarchive::save_override(t); + ^ +../../../boost/archive/detail/interface_oarchive.hpp:70:23: note: in instantiation of function template specialization 'boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::save_override<const boost::serialization::nvp<A> >' requested here + this->This()->save_override(t); + ^ +test_not_serializable.cpp:28:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_oarchive<boost::archive::text_oarchive>::operator<<<boost::serialization::nvp<A> >' requested here + oa << BOOST_SERIALIZATION_NVP(a); + ^ +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:70: +../../../boost/archive/detail/check.hpp:60:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:460:9: note: in instantiation of function template specialization 'boost::archive::detail::check_object_level<A>' requested here + check_object_level< T >(); + ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_non_pointer_type<boost::archive::text_iarchive>::invoke<A>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, A>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<A>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<A>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: (skipping 9 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + this->This()->load_override(t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<A> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + this->This()->load_override(t); + ^ +test_not_serializable.cpp:35:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<A> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:40: +In file included from ../../../boost/serialization/extended_type_info_typeid.hpp:37: +../../../boost/serialization/access.hpp:116:11: error: no member named 'serialize' in 'A' + t.serialize(ar, file_version); + ~ ^ +../../../boost/serialization/serialization.hpp:68:13: note: in instantiation of function template specialization 'boost::serialization::access::serialize<boost::archive::text_iarchive, A>' requested here + access::serialize(ar, t, static_cast<unsigned int>(file_version)); + ^ +../../../boost/serialization/serialization.hpp:126:5: note: in instantiation of function template specialization 'boost::serialization::serialize<boost::archive::text_iarchive, A>' requested here + serialize(ar, t, v); + ^ +../../../boost/archive/detail/iserializer.hpp:187:27: note: in instantiation of function template specialization 'boost::serialization::serialize_adl<boost::archive::text_iarchive, A>' requested here + boost::serialization::serialize_adl( + ^ +../../../boost/serialization/singleton.hpp:147:5: note: in instantiation of member function 'boost::archive::detail::iserializer<boost::archive::text_iarchive, A>::load_object_data' requested here + singleton_wrapper(){ + ^ +../../../boost/serialization/singleton.hpp:171:47: note: in instantiation of member function 'boost::serialization::detail::singleton_wrapper<boost::archive::detail::iserializer<boost::archive::text_iarchive, A> >::singleton_wrapper' requested here + static detail::singleton_wrapper< T > t; + ^ +../../../boost/serialization/singleton.hpp:196:16: note: (skipping 17 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return get_instance(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<A> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A> >' requested here + this->This()->load_override(t); + ^ +test_not_serializable.cpp:35:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<A> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +3 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_not_serializable.o +**passed** ../../../bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_not_serializable.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_fail.o +test_traits_fail.cpp:24:1: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' +BOOST_CLASS_TRACKING(A, boost::serialization::track_never) +^ +../../../boost/serialization/tracking.hpp:108:5: note: expanded from macro 'BOOST_CLASS_TRACKING' + BOOST_STATIC_ASSERT(( \ + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_fail.o +**passed** ../../../bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_fail.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1.o +In file included from test_const_load_fail1.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<const A>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A>' requested here + this->This()->load_override(t); + ^ +test_const_load_fail1.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const A>' requested here + ia >> a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2.o +In file included from test_const_load_fail2.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<A *const>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->This()->load_override(t); + ^ +test_const_load_fail2.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><A *const>' requested here + ia >> a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail2.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'A *const &' + t = pointer_tweak(newbpis_ptr->get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type<boost::archive::text_iarchive>::invoke<A *const>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->This()->load_override(t); + ^ +test_const_load_fail2.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><A *const>' requested here + ia >> a; + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive & ar, Tptr & t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3.o +In file included from test_const_load_fail3.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<const A *const>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->This()->load_override(t); + ^ +test_const_load_fail3.cpp:21:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const A *const>' requested here + ia >> a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail3.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'const A *const &' + t = pointer_tweak(newbpis_ptr->get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type<boost::archive::text_iarchive>::invoke<const A *const>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->This()->load_override(t); + ^ +test_const_load_fail3.cpp:21:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const A *const>' requested here + ia >> a; + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive & ar, Tptr & t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1_nvp.o +In file included from test_const_load_fail1_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<const A>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A>' requested here + this->This()->load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar >> t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<const A> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A> >' requested here + this->This()->load_override(t); + ^ +test_const_load_fail1_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<const A> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1_nvp.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1_nvp.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2_nvp.o +In file included from test_const_load_fail2_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<A *const>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->This()->load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar >> t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<A *const> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + this->This()->load_override(t); + ^ +test_const_load_fail2_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<A *const> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail2_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'A *const &' + t = pointer_tweak(newbpis_ptr->get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type<boost::archive::text_iarchive>::invoke<A *const>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<A *const>' requested here + this->This()->load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar >> t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<A *const> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<A *const> >' requested here + this->This()->load_override(t); + ^ +test_const_load_fail2_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<A *const> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive & ar, Tptr & t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2_nvp.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2_nvp.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3_nvp.o +In file included from test_const_load_fail3_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<const A *const>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->This()->load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar >> t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<const A *const> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + this->This()->load_override(t); + ^ +test_const_load_fail3_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<const A *const> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail3_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'const A *const &' + t = pointer_tweak(newbpis_ptr->get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type<boost::archive::text_iarchive>::invoke<const A *const>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const A *const>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const A *const>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const A *const>' requested here + this->This()->load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar >> t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const boost::serialization::nvp<const A *const> >' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const boost::serialization::nvp<const A *const> >' requested here + this->This()->load_override(t); + ^ +test_const_load_fail3_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const boost::serialization::nvp<const A *const> >' requested here + ia >> BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive & ar, Tptr & t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3_nvp.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3_nvp.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_save_warn1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn1.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_save_warn1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn1.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_check.o +In file included from test_check.cpp:18: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:78:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/oserializer.hpp:314:9: note: in instantiation of function template specialization 'boost::archive::detail::check_object_versioning<check2>' requested here + check_object_versioning< T >(); + ^ +../../../boost/archive/detail/oserializer.hpp:539:12: note: in instantiation of function template specialization 'boost::archive::detail::save_non_pointer_type<boost::archive::text_oarchive>::invoke<check2>' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_oarchive.hpp:71:18: note: in instantiation of function template specialization 'boost::archive::save<boost::archive::text_oarchive, const check2>' requested here + archive::save(* this->This(), t); + ^ +../../../boost/archive/basic_text_oarchive.hpp:83:39: note: in instantiation of function template specialization 'boost::archive::detail::common_oarchive<boost::archive::text_oarchive>::save_override<const check2>' requested here + this->detail_common_oarchive::save_override(t); + ^ +../../../boost/archive/detail/interface_oarchive.hpp:70:23: note: in instantiation of function template specialization 'boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::save_override<const check2>' requested here + this->This()->save_override(t); + ^ +test_check.cpp:85:12: note: in instantiation of function template specialization 'boost::archive::detail::interface_oarchive<boost::archive::text_oarchive>::operator<<<check2>' requested here + oa << c2_out; // error check_object_versioning + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_check.cpp:18: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE<false>' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading<const check1>' requested here + detail::check_const_loading< T >(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load<boost::archive::text_iarchive, const check1>' requested here + archive::load(* this->This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive<boost::archive::text_iarchive>::load_override<const check1>' requested here + this->detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive<boost::archive::text_iarchive>::load_override<const check1>' requested here + basic_text_iarchive<Archive>::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load_override<const check1>' requested here + this->This()->load_override(t); + ^ +test_check.cpp:91:12: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive<boost::archive::text_iarchive>::operator>><const check1>' requested here + ia >> c1_in; // check_const_loading + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template <bool x> struct STATIC_ASSERTION_FAILURE; + ^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_check.o +**passed** ../../../bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_check.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_save_warn2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn2.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_save_warn2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn2.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_save_warn3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn3.o +**passed** ../../../bin.v2/libs/serialization/test/test_const_save_warn3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_save_warn3.test +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_const_pass.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_pass.o +clang-darwin.compile.c++ ../../../bin.v2/libs/serialization/test/test_traits_pass.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_pass.o +**passed** ../../../bin.v2/libs/serialization/test/test_traits_pass.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_pass.test +**passed** ../../../bin.v2/libs/serialization/test/test_const_pass.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_pass.test +...updated 1433 targets... diff --git a/src/boost/libs/serialization/test/base.hpp b/src/boost/libs/serialization/test/base.hpp new file mode 100644 index 000000000..6491a0e5e --- /dev/null +++ b/src/boost/libs/serialization/test/base.hpp @@ -0,0 +1,46 @@ +#ifndef BOOST_SERIALIZATION_TEST_BASE_HPP +#define BOOST_SERIALIZATION_TEST_BASE_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// base.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 <boost/config.hpp> + +#include <boost/serialization/access.hpp> +#include <boost/serialization/assume_abstract.hpp> +#include <boost/preprocessor/facilities/empty.hpp> + +#if defined(BASE_IMPORT) + #define DLL_DECL BOOST_SYMBOL_IMPORT +#elif defined(BASE_EXPORT) + #define DLL_DECL BOOST_SYMBOL_EXPORT +#else + #define DLL_DECL +#endif + +class DLL_DECL base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */); +public: + virtual ~base(){}; +}; + +BOOST_SERIALIZATION_ASSUME_ABSTRACT(base) + +#undef DLL_DECL + +#endif // BOOST_SERIALIZATION_TEST_BASE_HPP diff --git a/src/boost/libs/serialization/test/binary_archive.hpp b/src/boost/libs/serialization/test/binary_archive.hpp new file mode 100644 index 000000000..abddd4f93 --- /dev/null +++ b/src/boost/libs/serialization/test/binary_archive.hpp @@ -0,0 +1,24 @@ +// (C) Copyright 2002-4 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. +// (C) Copyright 2002-4 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. + +// binary_archive +#include <boost/archive/binary_oarchive.hpp> +typedef boost::archive::binary_oarchive test_oarchive; +typedef std::ofstream test_ostream; + +#include <boost/archive/binary_iarchive.hpp> +typedef boost::archive::binary_iarchive test_iarchive; +typedef std::ifstream test_istream; + +//#define TEST_STREAM_FLAGS (std::ios::binary | std::ios::in | std::ios::out) +#define TEST_STREAM_FLAGS (std::ios::binary) diff --git a/src/boost/libs/serialization/test/binary_warchive.hpp b/src/boost/libs/serialization/test/binary_warchive.hpp new file mode 100644 index 000000000..a9f17c51a --- /dev/null +++ b/src/boost/libs/serialization/test/binary_warchive.hpp @@ -0,0 +1,14 @@ +// (C) Copyright 2002-4 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. +// binary_warchive +#include <boost/archive/binary_woarchive.hpp> +typedef boost::archive::binary_woarchive test_oarchive; +typedef std::wofstream test_ostream; +#include <boost/archive/binary_wiarchive.hpp> +typedef boost::archive::binary_wiarchive test_iarchive; +typedef std::wifstream test_istream; +#define TEST_STREAM_FLAGS std::wios::binary diff --git a/src/boost/libs/serialization/test/config_test.cpp b/src/boost/libs/serialization/test/config_test.cpp new file mode 100644 index 000000000..98ce0ab8b --- /dev/null +++ b/src/boost/libs/serialization/test/config_test.cpp @@ -0,0 +1,17 @@ +#include "../../../boost/config.hpp" + +#if defined(__clang__) +#pragma message "__clang__ defined" +#endif + +#if defined(BOOST_CLANG) +#pragma message "BOOST_CLANG defined" +#endif + +#if defined(__GNUC__) +#pragma message "__GNUC__ defined" +#endif + +#include "../../../boost/mpl/print.hpp" + +typedef int x; diff --git a/src/boost/libs/serialization/test/config_test.o b/src/boost/libs/serialization/test/config_test.o Binary files differnew file mode 100644 index 000000000..8e7087417 --- /dev/null +++ b/src/boost/libs/serialization/test/config_test.o diff --git a/src/boost/libs/serialization/test/derived2.hpp b/src/boost/libs/serialization/test/derived2.hpp new file mode 100644 index 000000000..e59b6b0fe --- /dev/null +++ b/src/boost/libs/serialization/test/derived2.hpp @@ -0,0 +1,50 @@ +#ifndef BOOST_SERIALIZATION_TEST_DERIVED2_HPP +#define BOOST_SERIALIZATION_TEST_DERIVED2_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// derived2.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 <boost/config.hpp> + +#include <boost/serialization/export.hpp> +#include <boost/serialization/access.hpp> + +#define BASE_IMPORT +#include "base.hpp" + +#if defined(DERIVED2_IMPORT) + #define DLL_DECL BOOST_SYMBOL_IMPORT +#elif defined(DERIVED2_EXPORT) + #define DLL_DECL BOOST_SYMBOL_EXPORT +#else + #define DLL_DECL +#endif + +class DLL_DECL derived2 : + public base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */); +public: + ~derived2(){} +}; + +#undef DLL_DECL + +// MWerks users can do this to make their code work +BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(base, derived2) + +#endif // BOOST_SERIALIZATION_TEST_DERIVED2_HPP diff --git a/src/boost/libs/serialization/test/dll_a.cpp b/src/boost/libs/serialization/test/dll_a.cpp new file mode 100644 index 000000000..7a8706cc3 --- /dev/null +++ b/src/boost/libs/serialization/test/dll_a.cpp @@ -0,0 +1,49 @@ + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// dll_a.cpp + +// (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) + +// Build a dll which contains the serialization for a class A +// used in testing distribution of serialization code in DLLS + +#define A_EXPORT +#include "A.hpp" +#include "A.ipp" +#include "A.cpp" + +// instantiate code for text archives + +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> + +template +A_DLL_DECL void A::serialize( + boost::archive::text_oarchive &ar, + const unsigned int /* file_version */ +); +template +A_DLL_DECL void A::serialize( + boost::archive::text_iarchive &ar, + const unsigned int /* file_version */ +); + +// instantiate code for polymorphic archives + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +template +A_DLL_DECL void A::serialize( + boost::archive::polymorphic_oarchive &, + const unsigned int /* file_version */ +); +template +A_DLL_DECL void A::serialize( + boost::archive::polymorphic_iarchive &, + const unsigned int /* file_version */ +); + diff --git a/src/boost/libs/serialization/test/dll_base.cpp b/src/boost/libs/serialization/test/dll_base.cpp new file mode 100644 index 000000000..dec8759af --- /dev/null +++ b/src/boost/libs/serialization/test/dll_base.cpp @@ -0,0 +1,55 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// dll_base.cpp + +// (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) + +// Build a dll which contains the serialization for a class A +// used in testing distribution of serialization code in DLLS +#include <boost/serialization/export.hpp> + +#define BASE_EXPORT +#include "base.hpp" + +template<class Archive> +void base::serialize( + Archive &ar, + const unsigned int /* file_version */){ +} + +// for some reason this is required at least by MSVC +// given that its declared virtual .. = 0; This +// seems wrong to me but here it is. +//polymorphic_base::~polymorphic_base(){} + +// instantiate code for text archives +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> + +// instantiate code for polymorphic archives +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +// note: BOOST_CLASS_EXPORT cannot be used to instantiate +// serialization code for an abstract base class. So use +// explicit instantiation in this case. +//BOOST_CLASS_EXPORT(polymorphic_base) + +template BOOST_SYMBOL_EXPORT void base::serialize( + boost::archive::text_oarchive & ar, + const unsigned int version +); +template BOOST_SYMBOL_EXPORT void base::serialize( + boost::archive::text_iarchive & ar, + const unsigned int version +); +template BOOST_SYMBOL_EXPORT void base::serialize( + boost::archive::polymorphic_oarchive & ar, + const unsigned int version +); +template BOOST_SYMBOL_EXPORT void base::serialize( + boost::archive::polymorphic_iarchive & ar, + const unsigned int version +); diff --git a/src/boost/libs/serialization/test/dll_derived2.cpp b/src/boost/libs/serialization/test/dll_derived2.cpp new file mode 100644 index 000000000..db5ebdad9 --- /dev/null +++ b/src/boost/libs/serialization/test/dll_derived2.cpp @@ -0,0 +1,56 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// dll_derived2.cpp + +// (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) + +// Build a dll which contains the serialization for a class A +// used in testing distribution of serialization code in DLLS + +#include <boost/config.hpp> + +#include <boost/serialization/nvp.hpp> + +#define DERIVED2_EXPORT +#include "derived2.hpp" + +template<class Archive> +void derived2::serialize( + Archive &ar, + const unsigned int /* file_version */ +){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); +} + +// instantiate code for text archives +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> + +template BOOST_SYMBOL_EXPORT void derived2::serialize( + boost::archive::text_oarchive & ar, + const unsigned int version +); +template BOOST_SYMBOL_EXPORT void derived2::serialize( + boost::archive::text_iarchive & ar, + const unsigned int version +); + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +template BOOST_SYMBOL_EXPORT void derived2::serialize( + boost::archive::polymorphic_oarchive & ar, + const unsigned int version +); +template BOOST_SYMBOL_EXPORT void derived2::serialize( + boost::archive::polymorphic_iarchive & ar, + const unsigned int version +); + +// note: export has to be AFTER #includes for all archive classes + +#include <boost/serialization/factory.hpp> +BOOST_SERIALIZATION_FACTORY_0(derived2) +BOOST_CLASS_EXPORT(derived2) diff --git a/src/boost/libs/serialization/test/dll_polymorphic_base.cpp b/src/boost/libs/serialization/test/dll_polymorphic_base.cpp new file mode 100644 index 000000000..9d949b5e3 --- /dev/null +++ b/src/boost/libs/serialization/test/dll_polymorphic_base.cpp @@ -0,0 +1,12 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// dll_polymorphic_base.cpp + +// (C) Copyright 2018 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. + +#define POLYMORPHIC_BASE_EXPORT +#include "polymorphic_base.cpp" diff --git a/src/boost/libs/serialization/test/dll_polymorphic_derived2.cpp b/src/boost/libs/serialization/test/dll_polymorphic_derived2.cpp new file mode 100644 index 000000000..8f6ada43b --- /dev/null +++ b/src/boost/libs/serialization/test/dll_polymorphic_derived2.cpp @@ -0,0 +1,13 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_derived2.cpp + +// (C) Copyright 2018Robert 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. + +#define POLYMORPHIC_BASE_IMPORT +#define POLYMORPHIC_DERIVED2_EXPORT +#include "polymorphic_derived2.cpp" diff --git a/src/boost/libs/serialization/test/library_status.html b/src/boost/libs/serialization/test/library_status.html new file mode 100644 index 000000000..e108a5637 --- /dev/null +++ b/src/boost/libs/serialization/test/library_status.html @@ -0,0 +1,369 @@ +<html> +<head> +<title>Boost Library Status Automatic Test</title> +</head> +<body bgcolor="#ffffff" text="#000000"> +<table border="0"> +<h1>Library Status: serialization/test</h1> +<b>Run Date:</b> 21:44:22 UTC, Friday 11 October 2019 +<br></td> +</table> +<br> +<table border="1" cellspacing="0" cellpadding="5"> +<tr> +<td rowspan="4">Test Name</td> +<td align="center" >clang-darwin-03</td> +</tr><tr> +<td align="center" >debug</td> +</tr><tr> +<td align="center" >threading-multi</td> +</tr><tr> +<td align="center" >visibility-hidden</td> +</tr><tr><td>test_array_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_array_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_array_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_array_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_array_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_binary_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_binary_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_binary_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_binary_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_binary_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_bitset_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_bitset_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_bitset_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_bitset_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_bitset_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_boost_array_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_boost_array_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_boost_array_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_boost_array_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_boost_array_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_check</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_class_info_load_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_load_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_load_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_load_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_load_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_save_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_save_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_save_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_save_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_class_info_save_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_codecvt_null</td><td align="right">Pass</td></tr> +<tr><td>test_complex_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_complex_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_complex_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_complex_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_complex_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_const_load_fail1</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_load_fail1_nvp</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_load_fail2</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_load_fail2_nvp</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_load_fail3</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_load_fail3_nvp</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_const_pass</td><td align="right">Pass</td></tr> +<tr><td>test_const_save_warn1</td><td align="right">Pass</td></tr> +<tr><td>test_const_save_warn2</td><td align="right">Pass</td></tr> +<tr><td>test_const_save_warn3</td><td align="right">Pass</td></tr> +<tr><td>test_contained_class_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_contained_class_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_contained_class_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_contained_class_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_contained_class_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_cyclic_ptrs_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_cyclic_ptrs_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_cyclic_ptrs_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_cyclic_ptrs_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_cyclic_ptrs_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_delete_pointer_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_delete_pointer_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_delete_pointer_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_delete_pointer_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_delete_pointer_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_deque_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_deque_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_deque_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_deque_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_deque_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_ptr_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_ptr_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_ptr_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_ptr_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_ptr_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_class_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_derived_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_complex_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_complex_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_complex_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_complex_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_complex_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_diamond_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_dll_exported_polymorphic_binary_archive</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_dll_exported_polymorphic_text_archive</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_dll_exported_polymorphic_text_warchive</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_dll_exported_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_dll_exported_polymorphic_xml_warchive</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_dll_simple</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_exported_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_exported_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_exported_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_exported_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_exported_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_ptrs_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_ptrs_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_ptrs_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_ptrs_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_ptrs_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_forward_list_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_helper_support_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_helper_support_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_helper_support_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_helper_support_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_helper_support_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_inclusion2</td><td align="right">Pass</td></tr> +<tr><td>test_inclusion</td><td align="right">Pass</td></tr> +<tr><td>test_interrupts_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_interrupts_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_interrupts_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_interrupts_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_interrupts_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_iterators</td><td align="right">Pass</td></tr> +<tr><td>test_iterators_base64</td><td align="right">Pass</td></tr> +<tr><td>test_list_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_ptrs_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_ptrs_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_ptrs_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_list_ptrs_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_ptrs_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_list_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_list_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_list_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_map_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_boost_unordered_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_boost_unordered_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_boost_unordered_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_map_boost_unordered_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_boost_unordered_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_map_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_map_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_map_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_mi_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_mi_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_mi_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_mi_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_mi_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_mult_archive_types</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_inheritance_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_inheritance_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_inheritance_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_inheritance_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_inheritance_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_ptrs_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_ptrs_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_ptrs_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_ptrs_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_multiple_ptrs_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_native_array_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_native_array_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_native_array_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_native_array_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_native_array_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_new_operator_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_new_operator_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_new_operator_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_new_operator_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_new_operator_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_no_rtti_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_no_rtti_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_no_rtti_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_no_rtti_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_no_rtti_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor2_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor2_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor2_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor2_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor2_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_default_ctor_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_intrusive_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_intrusive_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_intrusive_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_non_intrusive_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_non_intrusive_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_not_serializable</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_null_ptr_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_null_ptr_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_null_ptr_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_null_ptr_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_null_ptr_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_nvp_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_nvp_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_nvp_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_nvp_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_nvp_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_object_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_object_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_object_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_object_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_object_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_optional_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_optional_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_optional_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_optional_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_optional_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_p_helper_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_p_helper_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_p_helper_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_p_helper_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_p_helper_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic2_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic2_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic2_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic2_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic2_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_helper_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_helper_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_helper_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_helper_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_helper_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_polymorphic_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_polymorphic_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_polymorphic_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_polymorphic_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_polymorphic_polymorphic_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_primitive_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_primitive_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_primitive_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_primitive_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_primitive_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_priority_queue_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_priority_queue_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_priority_queue_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_priority_queue_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_priority_queue_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_private_ctor</td><td align="right">Pass</td></tr> +<tr><td>test_queue_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_queue_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_queue_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_queue_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_queue_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_recursion_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_recursion_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_recursion_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_recursion_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_recursion_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_registered_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_registered_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_registered_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_registered_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_registered_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_reset_object_address</td><td align="right">Pass</td></tr> +<tr><td>test_set_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_boost_unordered_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_boost_unordered_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_boost_unordered_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_set_boost_unordered_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_boost_unordered_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_set_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_set_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_set_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_132_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_132_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_132_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_132_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_132_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_multi_base_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_multi_base_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_multi_base_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_multi_base_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_multi_base_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_shared_ptr_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_ptr_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_ptr_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_ptr_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_ptr_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_ptr_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_simple_class_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_singleton</td><td align="right">Pass</td></tr> +<tr><td>test_singleton_inherited</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_singleton_plain</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_smart_cast</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_split_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_split_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_split_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_split_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_split_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_stack_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_stack_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_stack_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_stack_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_stack_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_static_warning</td><td align="right">Pass</td></tr> +<tr><td>test_strong_typedef</td><td align="right">Pass</td></tr> +<tr><td>test_tracking_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_tracking_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_tracking_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_tracking_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_tracking_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_traits_fail</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +<tr><td>test_traits_pass</td><td align="right">Pass</td></tr> +<tr><td>test_unique_ptr_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unique_ptr_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unique_ptr_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_unique_ptr_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unique_ptr_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_unregistered_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unregistered_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unregistered_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_unregistered_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_unregistered_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_valarray_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_valarray_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_valarray_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_valarray_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_valarray_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_variant_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_variant_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_variant_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_variant_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_variant_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_vector_binary_archive</td><td align="right">Pass</td></tr> +<tr><td>test_vector_text_archive</td><td align="right">Pass</td></tr> +<tr><td>test_vector_text_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_vector_xml_archive</td><td align="right">Pass</td></tr> +<tr><td>test_vector_xml_warchive</td><td align="right">Pass</td></tr> +<tr><td>test_void_cast</td><td align="right"><a href="links.html#bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden"><i>Warn</i></a></td></tr> +</table> +</body> +</html> diff --git a/src/boost/libs/serialization/test/links.html b/src/boost/libs/serialization/test/links.html new file mode 100644 index 000000000..2356ba5b7 --- /dev/null +++ b/src/boost/libs/serialization/test/links.html @@ -0,0 +1,748 @@ +<html> +<head> +<title>Boost Library Status Error Log</title> +</head> +<body bgcolor="#ffffff" text="#000000"> +<table border="0"> +<h1>Library Status: serialization/test</h1> +<b>Run Date:</b> 21:44:22 UTC, Friday 11 October 2019 +<br></table> +<br> +<h2><a name="bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_check.cpp:18: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:78:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/oserializer.hpp:314:9: note: in instantiation of function template specialization 'boost::archive::detail::check_object_versioning&lt;check2&gt;' requested here + check_object_versioning&lt; T &gt;(); + ^ +../../../boost/archive/detail/oserializer.hpp:539:12: note: in instantiation of function template specialization 'boost::archive::detail::save_non_pointer_type&lt;boost::archive::text_oarchive&gt;::invoke&lt;check2&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_oarchive.hpp:71:18: note: in instantiation of function template specialization 'boost::archive::save&lt;boost::archive::text_oarchive, const check2&gt;' requested here + archive::save(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_oarchive.hpp:83:39: note: in instantiation of function template specialization 'boost::archive::detail::common_oarchive&lt;boost::archive::text_oarchive&gt;::save_override&lt;const check2&gt;' requested here + this-&gt;detail_common_oarchive::save_override(t); + ^ +../../../boost/archive/detail/interface_oarchive.hpp:70:23: note: in instantiation of function template specialization 'boost::archive::basic_text_oarchive&lt;boost::archive::text_oarchive&gt;::save_override&lt;const check2&gt;' requested here + this-&gt;This()-&gt;save_override(t); + ^ +test_check.cpp:85:12: note: in instantiation of function template specialization 'boost::archive::detail::interface_oarchive&lt;boost::archive::text_oarchive&gt;::operator&lt;&lt;&lt;check2&gt;' requested here + oa &lt;&lt; c2_out; // error check_object_versioning + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_check.cpp:18: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;const check1&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const check1&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const check1&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const check1&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const check1&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_check.cpp:91:12: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const check1&gt;' requested here + ia &gt;&gt; c1_in; // check_const_loading + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_check.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_check.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_dll_exported_polymorphic_xml_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_not_serializable.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:40: +In file included from ../../../boost/serialization/extended_type_info_typeid.hpp:37: +../../../boost/serialization/access.hpp:116:11: error: no member named 'serialize' in 'A' + t.serialize(ar, file_version); + ~ ^ +../../../boost/serialization/serialization.hpp:68:13: note: in instantiation of function template specialization 'boost::serialization::access::serialize&lt;boost::archive::text_oarchive, A&gt;' requested here + access::serialize(ar, t, static_cast&lt;unsigned int&gt;(file_version)); + ^ +../../../boost/serialization/serialization.hpp:126:5: note: in instantiation of function template specialization 'boost::serialization::serialize&lt;boost::archive::text_oarchive, A&gt;' requested here + serialize(ar, t, v); + ^ +../../../boost/archive/detail/oserializer.hpp:153:27: note: in instantiation of function template specialization 'boost::serialization::serialize_adl&lt;boost::archive::text_oarchive, A&gt;' requested here + boost::serialization::serialize_adl( + ^ +../../../boost/serialization/singleton.hpp:147:5: note: in instantiation of member function 'boost::archive::detail::oserializer&lt;boost::archive::text_oarchive, A&gt;::save_object_data' requested here + singleton_wrapper(){ + ^ +../../../boost/serialization/singleton.hpp:171:47: note: in instantiation of member function 'boost::serialization::detail::singleton_wrapper&lt;boost::archive::detail::oserializer&lt;boost::archive::text_oarchive, A&gt; &gt;::singleton_wrapper' requested here + static detail::singleton_wrapper&lt; T &gt; t; + ^ +../../../boost/serialization/singleton.hpp:196:16: note: (skipping 15 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return get_instance(); + ^ +../../../boost/archive/detail/oserializer.hpp:539:12: note: in instantiation of function template specialization 'boost::archive::detail::save_non_pointer_type&lt;boost::archive::text_oarchive&gt;::invoke&lt;boost::serialization::nvp&lt;A&gt; &gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_oarchive.hpp:71:18: note: in instantiation of function template specialization 'boost::archive::save&lt;boost::archive::text_oarchive, const boost::serialization::nvp&lt;A&gt; &gt;' requested here + archive::save(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_oarchive.hpp:83:39: note: in instantiation of function template specialization 'boost::archive::detail::common_oarchive&lt;boost::archive::text_oarchive&gt;::save_override&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + this-&gt;detail_common_oarchive::save_override(t); + ^ +../../../boost/archive/detail/interface_oarchive.hpp:70:23: note: in instantiation of function template specialization 'boost::archive::basic_text_oarchive&lt;boost::archive::text_oarchive&gt;::save_override&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + this-&gt;This()-&gt;save_override(t); + ^ +test_not_serializable.cpp:28:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_oarchive&lt;boost::archive::text_oarchive&gt;::operator&lt;&lt;&lt;boost::serialization::nvp&lt;A&gt; &gt;' requested here + oa &lt;&lt; BOOST_SERIALIZATION_NVP(a); + ^ +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:70: +../../../boost/archive/detail/check.hpp:60:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:460:9: note: in instantiation of function template specialization 'boost::archive::detail::check_object_level&lt;A&gt;' requested here + check_object_level&lt; T &gt;(); + ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_non_pointer_type&lt;boost::archive::text_iarchive&gt;::invoke&lt;A&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, A&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: (skipping 9 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;A&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_not_serializable.cpp:35:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;A&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_not_serializable.cpp:14: +In file included from ./test_tools.hpp:246: +In file included from ./text_archive.hpp:8: +In file included from ../../../boost/archive/text_oarchive.hpp:31: +In file included from ../../../boost/archive/basic_text_oarchive.hpp:29: +In file included from ../../../boost/archive/detail/common_oarchive.hpp:22: +In file included from ../../../boost/archive/detail/interface_oarchive.hpp:23: +In file included from ../../../boost/archive/detail/oserializer.hpp:40: +In file included from ../../../boost/serialization/extended_type_info_typeid.hpp:37: +../../../boost/serialization/access.hpp:116:11: error: no member named 'serialize' in 'A' + t.serialize(ar, file_version); + ~ ^ +../../../boost/serialization/serialization.hpp:68:13: note: in instantiation of function template specialization 'boost::serialization::access::serialize&lt;boost::archive::text_iarchive, A&gt;' requested here + access::serialize(ar, t, static_cast&lt;unsigned int&gt;(file_version)); + ^ +../../../boost/serialization/serialization.hpp:126:5: note: in instantiation of function template specialization 'boost::serialization::serialize&lt;boost::archive::text_iarchive, A&gt;' requested here + serialize(ar, t, v); + ^ +../../../boost/archive/detail/iserializer.hpp:187:27: note: in instantiation of function template specialization 'boost::serialization::serialize_adl&lt;boost::archive::text_iarchive, A&gt;' requested here + boost::serialization::serialize_adl( + ^ +../../../boost/serialization/singleton.hpp:147:5: note: in instantiation of member function 'boost::archive::detail::iserializer&lt;boost... + (remainder deleted because of excessive size) +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail2.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;A *const&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail2.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;A *const&gt;' requested here + ia &gt;&gt; a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail2.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'A *const &amp;' + t = pointer_tweak(newbpis_ptr-&gt;get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type&lt;boost::archive::text_iarchive&gt;::invoke&lt;A *const&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail2.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;A *const&gt;' requested here + ia &gt;&gt; a; + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive &amp; ar, Tptr &amp; t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail2.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail1_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;const A&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar &gt;&gt; t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;const A&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail1_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;const A&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail1_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1_nvp.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail3.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;const A *const&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail3.cpp:21:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const A *const&gt;' requested here + ia &gt;&gt; a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail3.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'const A *const &amp;' + t = pointer_tweak(newbpis_ptr-&gt;get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type&lt;boost::archive::text_iarchive&gt;::invoke&lt;const A *const&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail3.cpp:21:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const A *const&gt;' requested here + ia &gt;&gt; a; + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive &amp; ar, Tptr &amp; t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail3.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_singleton_plain.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +test_singleton_plain.cpp:25:32: warning: unknown warning group '-Wterminate', ignored [-Wunknown-warning-option] +#pragma GCC diagnostic ignored "-Wterminate" + ^ +1 warning generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_singleton_inherited.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +test_singleton_inherited.cpp:26:32: warning: unknown warning group '-Wterminate', ignored [-Wunknown-warning-option] +#pragma GCC diagnostic ignored "-Wterminate" + ^ +1 warning generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_dll_simple.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_dll_simple.cpp:33: +./A.hpp:37:13: warning: A imported [-W#pragma-messages] + #pragma message("A imported") + ^ +1 warning generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_dll_exported_polymorphic_binary_archive.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +test_traits_fail.cpp:24:1: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' +BOOST_CLASS_TRACKING(A, boost::serialization::track_never) +^ +../../../boost/serialization/tracking.hpp:108:5: note: expanded from macro 'BOOST_CLASS_TRACKING' + BOOST_STATIC_ASSERT(( \ + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_traits_fail.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_traits_fail.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail1.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;const A&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail1.cpp:22:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const A&gt;' requested here + ia &gt;&gt; a; + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +1 error generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail1.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail1.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_smart_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +test_smart_cast.cpp:20:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_smart_cast.cpp:25:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_smart_cast.cpp:35:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +test_smart_cast.cpp:122:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_smart_cast.cpp:129:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_smart_cast.cpp:141:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +6 warnings generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail2_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;A *const&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar &gt;&gt; t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail2_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail2_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'A *const &amp;' + t = pointer_tweak(newbpis_ptr-&gt;get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type&lt;boost::archive::text_iarchive&gt;::invoke&lt;A *const&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar &gt;&gt; t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail2_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;A *const&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive &amp; ar, Tptr &amp; t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail2_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail2_nvp.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_const_load_fail3_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +In file included from ../../../boost/archive/detail/iserializer.hpp:90: +../../../boost/archive/detail/check.hpp:162:5: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' + BOOST_STATIC_ASSERT(typex::value); + ^ +../../../boost/static_assert.hpp:154:13: note: expanded from macro 'BOOST_STATIC_ASSERT' + sizeof(::boost::STATIC_ASSERTION_FAILURE&lt; BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) &gt;)&gt;\ + ^ +../../../boost/archive/detail/iserializer.hpp:609:13: note: in instantiation of function template specialization 'boost::archive::detail::check_const_loading&lt;const A *const&gt;' requested here + detail::check_const_loading&lt; T &gt;(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar &gt;&gt; t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail3_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/static_assert.hpp:79:26: note: template is declared here +template &lt;bool x&gt; struct STATIC_ASSERTION_FAILURE; + ^ +In file included from test_const_load_fail3_nvp.cpp:11: +In file included from ../../../boost/archive/text_iarchive.hpp:24: +In file included from ../../../boost/archive/basic_text_iarchive.hpp:30: +In file included from ../../../boost/archive/detail/common_iarchive.hpp:23: +In file included from ../../../boost/archive/detail/interface_iarchive.hpp:22: +../../../boost/archive/detail/iserializer.hpp:552:15: error: cannot assign to variable 't' with const-qualified type 'const A *const &amp;' + t = pointer_tweak(newbpis_ptr-&gt;get_eti(), t, *t); + ~ ^ +../../../boost/archive/detail/iserializer.hpp:624:12: note: in instantiation of function template specialization 'boost::archive::detail::load_pointer_type&lt;boost::archive::text_iarchive&gt;::invoke&lt;const A *const&gt;' requested here + typex::invoke(ar, t); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const A *const&gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const A *const&gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +../../../boost/serialization/nvp.hpp:56:8: note: (skipping 8 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + ar &gt;&gt; t.value(); + ^ +../../../boost/archive/detail/common_iarchive.hpp:67:18: note: in instantiation of function template specialization 'boost::archive::load&lt;boost::archive::text_iarchive, const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + archive::load(* this-&gt;This(), t); + ^ +../../../boost/archive/basic_text_iarchive.hpp:70:39: note: in instantiation of function template specialization 'boost::archive::detail::common_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + this-&gt;detail_common_iarchive::load_override(t); + ^ +../../../boost/archive/text_iarchive.hpp:82:39: note: in instantiation of function template specialization 'boost::archive::basic_text_iarchive&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + basic_text_iarchive&lt;Archive&gt;::load_override(t); + ^ +../../../boost/archive/detail/interface_iarchive.hpp:68:23: note: in instantiation of function template specialization 'boost::archive::text_iarchive_impl&lt;boost::archive::text_iarchive&gt;::load_override&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + this-&gt;This()-&gt;load_override(t); + ^ +test_const_load_fail3_nvp.cpp:23:8: note: in instantiation of function template specialization 'boost::archive::detail::interface_iarchive&lt;boost::archive::text_iarchive&gt;::operator&gt;&gt;&lt;const boost::serialization::nvp&lt;const A *const&gt; &gt;' requested here + ia &gt;&gt; BOOST_SERIALIZATION_NVP(a); + ^ +../../../boost/archive/detail/iserializer.hpp:538:45: note: variable 't' declared const here + static void invoke(Archive &amp; ar, Tptr &amp; t){ + ~~~~~~~^ +2 errors generated. +(failed-as-expected) ../../../bin.v2/libs/serialization/test/test_const_load_fail3_nvp.test/clang-darwin-03/debug/threading-multi/visibility-hidden/test_const_load_fail3_nvp.o +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_dll_exported_polymorphic_text_warchive.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +In file included from test_dll_exported.cpp:51: +./polymorphic_base.hpp:29:13: warning: polymorphic_base imported [-W#pragma-messages] + #pragma message ("polymorphic_base imported") + ^ +In file included from test_dll_exported.cpp:56: +./polymorphic_derived2.hpp:29:13: warning: polymorphic_derived2 imported [-W#pragma-messages] + #pragma message ("polymorphic_derived2 imported") + ^ +2 warnings generated. +</pre> +<h2><a name="bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden">bin.v2/libs/serialization/test/test_void_cast.test/clang-darwin-03/debug/threading-multi/visibility-hidden</a></h2> +<h3>Compiler output:</h3><pre> +test_void_cast.cpp:18:10: warning: private field 'a' is not used [-Wunused-private-field] + char a; + ^ +test_void_cast.cpp:23:9: warning: private field 'b' is not used [-Wunused-private-field] + int b; + ^ +test_void_cast.cpp:28:10: warning: private field 'c' is not used [-Wunused-private-field] + long c; + ^ +test_void_cast.cpp:33:10: warning: private field 'd' is not used [-Wunused-private-field] + char d[32]; + ^ +4 warnings generated. +</pre> +</body> +</html> diff --git a/src/boost/libs/serialization/test/multi_shared1.cpp b/src/boost/libs/serialization/test/multi_shared1.cpp new file mode 100644 index 000000000..ddb6174e6 --- /dev/null +++ b/src/boost/libs/serialization/test/multi_shared1.cpp @@ -0,0 +1,23 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_multi_shared_lib.cpp: test that implementation of extented_type_info +// works when using multiple shared libraries + +// (C) Copyright 2018 Alexander Grund +// 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 <boost/archive/text_oarchive.hpp> +#include <iostream> + +struct X1{ + template<class Archive> + void serialize(Archive &, const unsigned int){} +}; + +BOOST_CLASS_IMPLEMENTATION(X1, boost::serialization::object_class_info) + +BOOST_SYMBOL_EXPORT bool f(){ + boost::archive::text_oarchive(std::cout) & X1(); + return true; +} diff --git a/src/boost/libs/serialization/test/multi_shared2.cpp b/src/boost/libs/serialization/test/multi_shared2.cpp new file mode 100644 index 000000000..12e0a87fb --- /dev/null +++ b/src/boost/libs/serialization/test/multi_shared2.cpp @@ -0,0 +1,22 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// multi_shared2.cpp: library simply using extended_type_info_typeid + +// (C) Copyright 2018 Alexander Grund +// 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 <boost/archive/text_oarchive.hpp> +#include <iostream> + +struct X2{ + template<class Archive> + void serialize(Archive &, const unsigned int){} +}; + +BOOST_CLASS_IMPLEMENTATION(X2, boost::serialization::object_class_info) + +BOOST_SYMBOL_EXPORT bool g(){ + boost::archive::text_oarchive(std::cout) & X2(); + return true; +} diff --git a/src/boost/libs/serialization/test/polymorphic_array_binary_archive.hpp b/src/boost/libs/serialization/test/polymorphic_array_binary_archive.hpp new file mode 100644 index 000000000..fbfae292c --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_array_binary_archive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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 <boost/archive/polymorphic_binary_oarchive.hpp> +typedef boost::archive::polymorphic_binary_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/polymorphic_binary_iarchive.hpp> +typedef boost::archive::polymorphic_binary_iarchive test_iarchive; +typedef std::ifstream test_istream; +#define TEST_STREAM_FLAGS std::ios::binary diff --git a/src/boost/libs/serialization/test/polymorphic_base.cpp b/src/boost/libs/serialization/test/polymorphic_base.cpp new file mode 100644 index 000000000..a3e50cda0 --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_base.cpp @@ -0,0 +1,38 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_base.cpp + +// (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 <boost/serialization/export.hpp> + +#include "polymorphic_base.hpp" + +template<class Archive> +POLYMORPHIC_BASE_DLL_DECL void polymorphic_base::serialize( + Archive &ar, + const unsigned int /* file_version */ +){} + +POLYMORPHIC_BASE_DLL_DECL +polymorphic_base::polymorphic_base(){} +POLYMORPHIC_BASE_DLL_DECL +polymorphic_base::~polymorphic_base(){} + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +template +POLYMORPHIC_BASE_DLL_DECL void polymorphic_base::serialize( + boost::archive::polymorphic_oarchive &, + const unsigned int /* file_version */ +); +template POLYMORPHIC_BASE_DLL_DECL void polymorphic_base::serialize( + boost::archive::polymorphic_iarchive &, + const unsigned int +); +BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_base) diff --git a/src/boost/libs/serialization/test/polymorphic_base.hpp b/src/boost/libs/serialization/test/polymorphic_base.hpp new file mode 100644 index 000000000..f2f3a2fd4 --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_base.hpp @@ -0,0 +1,66 @@ +#ifndef POLYMORPHIC_BASE_HPP +#define POLYMORPHIC_BASE_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_base.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 <boost/config.hpp> + +#include <boost/serialization/access.hpp> +#include <boost/serialization/assume_abstract.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/extended_type_info_no_rtti.hpp> + +#if defined(POLYMORPHIC_BASE_IMPORT) + #define POLYMORPHIC_BASE_DLL_DECL BOOST_SYMBOL_IMPORT + #pragma message ("polymorphic_base imported") +#elif defined(POLYMORPHIC_BASE_EXPORT) + #define POLYMORPHIC_BASE_DLL_DECL BOOST_SYMBOL_EXPORT + #pragma message ("polymorphic_base exported") +#endif + +#ifndef POLYMORPHIC_BASE_DLL_DECL + #define POLYMORPHIC_BASE_DLL_DECL +#endif + +class BOOST_SYMBOL_VISIBLE polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + POLYMORPHIC_BASE_DLL_DECL void serialize( + Archive & /* ar */, + const unsigned int /* file_version */ + ); +public: + // note that since this class uses the "no_rtti" + // extended_type_info implementation, it MUST + // implement this function + virtual const char * get_key() const = 0; + POLYMORPHIC_BASE_DLL_DECL polymorphic_base(); + POLYMORPHIC_BASE_DLL_DECL virtual ~polymorphic_base(); +}; + +BOOST_SERIALIZATION_ASSUME_ABSTRACT(polymorphic_base) + +// the no_rtti system requires this !!! +BOOST_CLASS_EXPORT_KEY(polymorphic_base) + +BOOST_CLASS_TYPE_INFO( + polymorphic_base, + extended_type_info_no_rtti<polymorphic_base> +) + +#endif // POLYMORPHIC_BASE_HPP diff --git a/src/boost/libs/serialization/test/polymorphic_binary_archive.hpp b/src/boost/libs/serialization/test/polymorphic_binary_archive.hpp new file mode 100644 index 000000000..fbfae292c --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_binary_archive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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 <boost/archive/polymorphic_binary_oarchive.hpp> +typedef boost::archive::polymorphic_binary_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/polymorphic_binary_iarchive.hpp> +typedef boost::archive::polymorphic_binary_iarchive test_iarchive; +typedef std::ifstream test_istream; +#define TEST_STREAM_FLAGS std::ios::binary diff --git a/src/boost/libs/serialization/test/polymorphic_derived1.cpp b/src/boost/libs/serialization/test/polymorphic_derived1.cpp new file mode 100644 index 000000000..a3565f6c4 --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_derived1.cpp @@ -0,0 +1,37 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_derived1.cpp + +// (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 <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/export.hpp> + +#include "polymorphic_derived1.hpp" + +const char * polymorphic_derived1::get_key() const { + return + boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance().get_key(); +} + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +template +void polymorphic_derived1::serialize( + boost::archive::polymorphic_oarchive &, + const unsigned int /* file_version */ +); +template +void polymorphic_derived1::serialize( + boost::archive::polymorphic_iarchive &, + const unsigned int +); + +BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_derived1) diff --git a/src/boost/libs/serialization/test/polymorphic_derived1.hpp b/src/boost/libs/serialization/test/polymorphic_derived1.hpp new file mode 100644 index 000000000..57a7c808b --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_derived1.hpp @@ -0,0 +1,45 @@ +#ifndef POLYMORPHIC_DERIVED1_HPP +#define POLYMORPHIC_DERIVED1_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_derived1.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 <boost/serialization/access.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/extended_type_info_no_rtti.hpp> + +#include "polymorphic_base.hpp" + +class polymorphic_derived1 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +public: + virtual const char * get_key() const ; +}; + +BOOST_CLASS_EXPORT_KEY(polymorphic_derived1) + +BOOST_CLASS_TYPE_INFO( + polymorphic_derived1, + extended_type_info_no_rtti<polymorphic_derived1> +) + +#endif // POLYMORPHIC_DERIVED1_HPP diff --git a/src/boost/libs/serialization/test/polymorphic_derived2.cpp b/src/boost/libs/serialization/test/polymorphic_derived2.cpp new file mode 100644 index 000000000..1c710d429 --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_derived2.cpp @@ -0,0 +1,52 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_derived2.cpp + +// (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 <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/extended_type_info_no_rtti.hpp> +#include <boost/serialization/export.hpp> + +#include "polymorphic_base.hpp" +#include "polymorphic_derived2.hpp" + +template<class Archive> +POLYMORPHIC_DERIVED2_DLL_DECL void polymorphic_derived2::serialize( + Archive &ar, + const unsigned int /* file_version */ +){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); +} + +const char * polymorphic_derived2::get_key() const { + return "polymorphic_derived2"; +} +POLYMORPHIC_DERIVED2_DLL_DECL +polymorphic_derived2::polymorphic_derived2(){} +POLYMORPHIC_DERIVED2_DLL_DECL +polymorphic_derived2::~polymorphic_derived2(){} + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +template +POLYMORPHIC_DERIVED2_DLL_DECL void polymorphic_derived2::serialize( + boost::archive::polymorphic_oarchive &, + const unsigned int /* file_version */ +); +template +POLYMORPHIC_DERIVED2_DLL_DECL void polymorphic_derived2::serialize( + boost::archive::polymorphic_iarchive &, + const unsigned int +); + +// MWerks users can do this to make their code work +BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(polymorphic_base, polymorphic_derived2) + +// note: export has to be AFTER #includes for all archive classes +BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_derived2) diff --git a/src/boost/libs/serialization/test/polymorphic_derived2.hpp b/src/boost/libs/serialization/test/polymorphic_derived2.hpp new file mode 100644 index 000000000..0527631fe --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_derived2.hpp @@ -0,0 +1,71 @@ +#ifndef BOOST_SERIALIZATION_TEST_POLYMORPHIC_DERIVED2_HPP +#define BOOST_SERIALIZATION_TEST_POLYMORPHIC_DERIVED2_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// polymorphic_derived2.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 <boost/config.hpp> + +#include <boost/serialization/access.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/extended_type_info_typeid.hpp> + +#if defined(POLYMORPHIC_DERIVED2_IMPORT) + #define POLYMORPHIC_DERIVED2_DLL_DECL BOOST_SYMBOL_IMPORT + #pragma message ("polymorphic_derived2 imported") +#elif defined(POLYMORPHIC_DERIVED2_EXPORT) + #define POLYMORPHIC_DERIVED2_DLL_DECL BOOST_SYMBOL_EXPORT + #pragma message ("polymorphic_derived2 exported") +#endif + +#ifndef POLYMORPHIC_DERIVED2_DLL_DECL + #define POLYMORPHIC_DERIVED2_DLL_DECL +#endif + +#define POLYMORPHIC_BASE_IMPORT +#include "polymorphic_base.hpp" + +class BOOST_SYMBOL_VISIBLE polymorphic_derived2 : + public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + POLYMORPHIC_DERIVED2_DLL_DECL void serialize( + Archive &ar, + const unsigned int /* file_version */ + ); + POLYMORPHIC_DERIVED2_DLL_DECL const char * get_key() const; +public: + POLYMORPHIC_DERIVED2_DLL_DECL polymorphic_derived2(); + POLYMORPHIC_DERIVED2_DLL_DECL ~polymorphic_derived2(); +}; + +// we use this because we want to assign a key to this type +// but we don't want to explicitly instantiate code every time +// we do so!!!. If we don't do this, we end up with the same +// code in BOTH the DLL which implements polymorphic_derived2 +// as well as the main program. +BOOST_CLASS_EXPORT_KEY(polymorphic_derived2) + +// note the mixing of type_info systems is supported. +BOOST_CLASS_TYPE_INFO( + polymorphic_derived2, + boost::serialization::extended_type_info_typeid<polymorphic_derived2> +) + +#endif // BOOST_SERIALIZATION_TEST_POLYMORPHIC_DERIVED2_HPP + diff --git a/src/boost/libs/serialization/test/polymorphic_text_archive.hpp b/src/boost/libs/serialization/test/polymorphic_text_archive.hpp new file mode 100644 index 000000000..bcda7509b --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_text_archive.hpp @@ -0,0 +1,12 @@ +// (C) Copyright 2002-4 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 <boost/archive/polymorphic_text_oarchive.hpp> +typedef boost::archive::polymorphic_text_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/polymorphic_text_iarchive.hpp> +typedef boost::archive::polymorphic_text_iarchive test_iarchive; +typedef std::ifstream test_istream; diff --git a/src/boost/libs/serialization/test/polymorphic_text_warchive.hpp b/src/boost/libs/serialization/test/polymorphic_text_warchive.hpp new file mode 100644 index 000000000..636ab25ca --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_text_warchive.hpp @@ -0,0 +1,17 @@ +// (C) Copyright 2002-4 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 <boost/config.hpp> +#ifdef BOOST_NO_STD_WSTREAMBUF +#error "wide char i/o not supported on this platform" +#else +#include <boost/archive/polymorphic_text_woarchive.hpp> +typedef boost::archive::polymorphic_text_woarchive test_oarchive; +typedef std::wofstream test_ostream; +#include <boost/archive/polymorphic_text_wiarchive.hpp> +typedef boost::archive::polymorphic_text_wiarchive test_iarchive; +typedef std::wifstream test_istream; +#endif diff --git a/src/boost/libs/serialization/test/polymorphic_xml_archive.hpp b/src/boost/libs/serialization/test/polymorphic_xml_archive.hpp new file mode 100644 index 000000000..fd8adbd31 --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_xml_archive.hpp @@ -0,0 +1,12 @@ +// (C) Copyright 2002-4 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 <boost/archive/polymorphic_xml_oarchive.hpp> +typedef boost::archive::polymorphic_xml_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/polymorphic_xml_iarchive.hpp> +typedef boost::archive::polymorphic_xml_iarchive test_iarchive; +typedef std::ifstream test_istream; diff --git a/src/boost/libs/serialization/test/polymorphic_xml_warchive.hpp b/src/boost/libs/serialization/test/polymorphic_xml_warchive.hpp new file mode 100644 index 000000000..15b5f704b --- /dev/null +++ b/src/boost/libs/serialization/test/polymorphic_xml_warchive.hpp @@ -0,0 +1,12 @@ +// (C) Copyright 2002-4 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 <boost/archive/polymorphic_xml_woarchive.hpp> +typedef boost::archive::polymorphic_xml_woarchive test_oarchive; +typedef std::wofstream test_ostream; +#include <boost/archive/polymorphic_xml_wiarchive.hpp> +typedef boost::archive::polymorphic_xml_wiarchive test_iarchive; +typedef std::wifstream test_istream; diff --git a/src/boost/libs/serialization/test/portable_binary_archive.hpp b/src/boost/libs/serialization/test/portable_binary_archive.hpp new file mode 100644 index 000000000..768b9588e --- /dev/null +++ b/src/boost/libs/serialization/test/portable_binary_archive.hpp @@ -0,0 +1,31 @@ +// (C) Copyright 2002-4 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. +// file includes for testing a custom archive. +// as an example this tests the portable binary archive + +#include <fstream> + +// #include output archive header +#include "../example/portable_binary_oarchive.hpp" +// define output archive class to be used +typedef portable_binary_oarchive test_oarchive; +// and corresponding stream +typedef std::ofstream test_ostream; + +// repeat the above for correspondng input archive +#include "../example/portable_binary_iarchive.hpp" +typedef portable_binary_iarchive test_iarchive; +typedef std::ifstream test_istream; + +// since this archive class isn't compiled into the +// boost serialization library, include this here +// so that things get instantiated +#include "../example/portable_binary_oarchive.cpp" +#include "../example/portable_binary_iarchive.cpp" + +// and stream open flags +#define TEST_STREAM_FLAGS std::ios::binary diff --git a/src/boost/libs/serialization/test/test3.dat b/src/boost/libs/serialization/test/test3.dat new file mode 100644 index 000000000..9aef73950 --- /dev/null +++ b/src/boost/libs/serialization/test/test3.dat @@ -0,0 +1 @@ + <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization> <boost_serialization signature="serialization::archive" version="3"> <a class_id="0" tracking_level="0"> <b>1</b> <f>96953204</f> <g>177129195</g> <l>1</l> <m>5627</m> <n>23010</n> <o>7419</o> <p>16212</p> <q>4086</q> <r>2749</r> <c>-33</c> <s>124</s> <t>28</t> <u>32225</u> <v>17543</v> <w>0.84431422</w> <x>1.0170664757130923</x> <y>tjbx</y> <z>cuwjentqpkejp</z> </a> </boost_serialization>
\ No newline at end of file diff --git a/src/boost/libs/serialization/test/test__helper.cpp b/src/boost/libs/serialization/test/test__helper.cpp new file mode 100644 index 000000000..a4404e89a --- /dev/null +++ b/src/boost/libs/serialization/test/test__helper.cpp @@ -0,0 +1,160 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +// the following is to ensure that when one of the libraries changes +// BJAM rebuilds and relinks the test. +/* +#include "polymorphic_text_archive.hpp" +#include "polymorphic_text_warchive.hpp" +#include "polymorphic_binary_archive.hpp" +#include "polymorphic_xml_archive.hpp" +#include "polymorphic_xml_warchive.hpp" +*/ + +#include <string> +#include <vector> + +#include "test_tools.hpp" +#include <boost/lexical_cast.hpp> +#include <boost/serialization/split_free.hpp> +#include <boost/serialization/vector.hpp> +#include <boost/serialization/nvp.hpp> +// this test uses a special string (my_string) whose contents are shared +// and hence saved in the archive only once. We need a helper in order +// to convert my_string into a serializable type + +class my_string:public std::string +{ + typedef std::string super; + +public: + my_string(){} + my_string(const super & str): super(str){} + my_string & operator=(const super& rhs) { + super::operator=(rhs); + return *this; + } +}; + +struct my_string_helper +{ + typedef std::vector<my_string> table; + table m_t; +}; + +BOOST_SERIALIZATION_SPLIT_FREE(my_string) + +namespace boost { +namespace serialization { + +template<class Archive> +void save(Archive & ar, const my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, const my_string &, const unsigned int) = & save; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + my_string_helper::table::iterator it = std::find(t.begin(), t.end(), str); + if(it == t.end()){ + my_string_helper::table::size_type s = t.size(); + ar << make_nvp("index", s); + t.push_back(str); + ar << make_nvp("string", static_cast<const std::string &>(str)); + } + else{ + my_string_helper::table::size_type s = it - t.begin(); + ar << make_nvp("index", s); + } +} + +template<class Archive> +void load(Archive & ar, my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, my_string &, const unsigned int) = & load; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + + my_string_helper::table::size_type s; + ar >> make_nvp("index", s); + t.reserve(s); + if(s >= t.size()){ + std::string tmp; + ar >> make_nvp("string", tmp); + str = tmp; + t.push_back(str); + } + else{ + str = t[s]; + } +} + +} // namespace serialization +} // namespace boost +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +int test_main(int /* argc */, char * /* argv */ []) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::vector<my_string> v1; + for(int i=0; i<1000; ++i){ + v1.push_back(my_string(boost::lexical_cast<std::string>(i % 100))); + } + + // test using using polymorphic implementation. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + oa_implementation << boost::serialization::make_nvp("vector", v1); + } + { + std::vector<my_string> v2; + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + ia_implementation >> boost::serialization::make_nvp("vector", v2); + BOOST_CHECK(v1 == v2); + } + std::remove(testfile); + + // test using using polymorphic interface. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + oa_interface << boost::serialization::make_nvp("vector", v1); + } + { + std::vector<my_string> v2; + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + ia_interface >> boost::serialization::make_nvp("vector", v2); + BOOST_CHECK(v1 == v2); + } + std::remove(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_array.cpp b/src/boost/libs/serialization/test/test_array.cpp new file mode 100644 index 000000000..b23995fa2 --- /dev/null +++ b/src/boost/libs/serialization/test/test_array.cpp @@ -0,0 +1,92 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_array.cpp + +// (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) + +// should pass compilation and execution + +#include <stdlib.h> + +#include <boost/config.hpp> +#include <cstddef> +#include <fstream> +#include <algorithm> // equal +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif +#include "test_tools.hpp" +#include <boost/serialization/array.hpp> +#include <boost/core/no_exceptions_support.hpp> +#include <boost/archive/archive_exception.hpp> + +#include "A.hpp" +#include "A.ipp" + +template <class T> +int test_std_array(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + const std::array<T, 10> a_array = {{T(),T(),T(),T(),T(),T(),T(),T(),T(),T()}}; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a_array", a_array); + } + { + std::array<T, 10> a_array1; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a_array", a_array1); + } + BOOST_CHECK(std::equal(a_array.begin(), a_array.end(), a_array1.begin())); + } + { + std::array<T, 9> a_array1; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + ia >> boost::serialization::make_nvp("a_array", a_array1); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + BOOST_CHECK( + boost::archive::archive_exception::array_size_too_short + == ae.code + ); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + is.close(); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test_main( int /* argc */, char* /* argv */[] ){ + int res; + + // std array + res = test_std_array<A>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + // test an int array for which optimized versions should be available + res = test_std_array<int>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_binary.cpp b/src/boost/libs/serialization/test/test_binary.cpp new file mode 100644 index 000000000..476f9ebd9 --- /dev/null +++ b/src/boost/libs/serialization/test/test_binary.cpp @@ -0,0 +1,167 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_simple_class.cpp + +// (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) + +// should pass compilation and execution + +#include <cstdlib> // for rand(), NULL, size_t + +#include <fstream> +#include <boost/config.hpp> + +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/binary_object.hpp> + +class A { + friend class boost::serialization::access; + char data[150]; + // 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. + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */){ + ar & boost::serialization::make_nvp( + "data", + boost::serialization::make_binary_object(data, sizeof(data)) + ); + } + +public: + A(); + bool operator==(const A & rhs) const; +}; + +A::A(){ + int i = sizeof(data); + while(i-- > 0) + data[i] = static_cast<char>(0xff & std::rand()); +} + +bool A::operator==(const A & rhs) const { + int i = sizeof(data); + while(i-- > 0) + if(data[i] != rhs.data[i]) + return false; + return true; +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A a; + char s1[] = "a"; + char s2[] = "ab"; + char s3[] = "abc"; + char s4[] = "abcd"; + const int i = 12345; + + A a1; + char s1_1[10]; + char s1_2[10]; + char s1_3[10]; + char s1_4[10]; + int i1 = 34790; + + std::memset(s1_1, '\0', sizeof(s1_1)); + std::memset(s1_2, '\0', sizeof(s1_2)); + std::memset(s1_3, '\0', sizeof(s1_3)); + std::memset(s1_4, '\0', sizeof(s1_4)); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp( + "s1", + boost::serialization::make_binary_object( + s1, + sizeof(s1) + ) + ); + oa << boost::serialization::make_nvp( + "s2", + boost::serialization::make_binary_object( + s2, + sizeof(s2) + ) + ); + oa << boost::serialization::make_nvp( + "s3", + boost::serialization::make_binary_object( + s3, + sizeof(s3) + ) + ); + oa << boost::serialization::make_nvp( + "s4", + boost::serialization::make_binary_object( + s4, + sizeof(s4) + ) + ); + oa << BOOST_SERIALIZATION_NVP(a); + // note: add a little bit on the end of the archive to detect + // failure of text mode binary. + oa << BOOST_SERIALIZATION_NVP(i); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp( + "s1", + boost::serialization::make_binary_object( + s1_1, + sizeof(s1) + ) + ); + ia >> boost::serialization::make_nvp( + "s2", + boost::serialization::make_binary_object( + s1_2, + sizeof(s2) + ) + ); + ia >> boost::serialization::make_nvp( + "s3", + boost::serialization::make_binary_object( + s1_3, + sizeof(s3) + ) + ); + ia >> boost::serialization::make_nvp( + "s4", + boost::serialization::make_binary_object( + s1_4, + sizeof(s4) + ) + ); + ia >> BOOST_SERIALIZATION_NVP(a1); + // note: add a little bit on the end of the archive to detect + // failure of text mode binary. + ia >> BOOST_SERIALIZATION_NVP(i1); + } + BOOST_CHECK(0 == std::strcmp(s1, s1_1)); + BOOST_CHECK(0 == std::strcmp(s2, s1_2)); + BOOST_CHECK(0 == std::strcmp(s3, s1_3)); + BOOST_CHECK(0 == std::strcmp(s4, s1_4)); + BOOST_CHECK(a == a1); + BOOST_CHECK(i == i1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_bitset.cpp b/src/boost/libs/serialization/test/test_bitset.cpp new file mode 100644 index 000000000..356c2231f --- /dev/null +++ b/src/boost/libs/serialization/test/test_bitset.cpp @@ -0,0 +1,64 @@ +// (C) Copyright 2009 Brian Ravnsgaard and Kenneth Riddile +// Use, modification and distribution are 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 most recent version including documentation. + +// Test that serialization of std::bitset works. +// Should pass compilation and execution +// 16.09.2004, updated 04.03.2009 + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> + +#if defined( BOOST_NO_STDC_NAMESPACE ) +namespace std +{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/bitset.hpp> +#include <boost/serialization/nvp.hpp> + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char* testfile = boost::archive::tmpnam( NULL ); + BOOST_REQUIRE( NULL != testfile ); + + std::bitset<8> bitsetA; + bitsetA.set( 0, false ); + bitsetA.set( 1, true ); + bitsetA.set( 2, false ); + bitsetA.set( 3, true ); + bitsetA.set( 4, false ); + bitsetA.set( 5, false ); + bitsetA.set( 6, true ); + bitsetA.set( 7, true ); + + { + test_ostream os( testfile, TEST_STREAM_FLAGS ); + test_oarchive oa( os ); + oa << boost::serialization::make_nvp( "bitset", bitsetA ); + } + + std::bitset<8> bitsetB; + { + test_istream is( testfile, TEST_STREAM_FLAGS ); + test_iarchive ia( is ); + ia >> boost::serialization::make_nvp( "bitset", bitsetB ); + } + + BOOST_CHECK( bitsetA == bitsetB ); + + std::remove( testfile ); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_boost_array.cpp b/src/boost/libs/serialization/test/test_boost_array.cpp new file mode 100644 index 000000000..39ad6583d --- /dev/null +++ b/src/boost/libs/serialization/test/test_boost_array.cpp @@ -0,0 +1,93 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_array.cpp + +// (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) + +// should pass compilation and execution + +#include <stdlib.h> + +#include <boost/config.hpp> +#include <cstddef> +#include <fstream> +#include <algorithm> // equal +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif +#include "test_tools.hpp" +#include <boost/core/no_exceptions_support.hpp> +#include <boost/archive/archive_exception.hpp> +#include <boost/serialization/boost_array.hpp> + +#include "A.hpp" +#include "A.ipp" + +template <class T> +int test_boost_array(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + const boost::array<T,10> a_array = {{T(),T(),T(),T(),T(),T(),T(),T(),T(),T()}}; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a_array", a_array); + } + { + boost::array<T,10> a_array1; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a_array", a_array1); + } + is.close(); + BOOST_CHECK(std::equal(a_array.begin(), a_array.end(), a_array1.begin())); + } + { + boost::array<T, 9> a_array1; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + ia >> boost::serialization::make_nvp("a_array", a_array1); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + BOOST_CHECK( + boost::archive::archive_exception::array_size_too_short + == ae.code + ); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + is.close(); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test_main( int /* argc */, char* /* argv */[] ){ + int res; + + // boost array + res = test_boost_array<A>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + // test an int array for which optimized versions should be available + res = test_boost_array<int>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_check.cpp b/src/boost/libs/serialization/test/test_check.cpp new file mode 100644 index 000000000..5f1957d23 --- /dev/null +++ b/src/boost/libs/serialization/test/test_check.cpp @@ -0,0 +1,145 @@ +// (C) Copyright 2009 Robert Ramey +// Use, modification and distribution are 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 most recent version including documentation. + +// note: this is a compile only test. +#include <sstream> +#include <boost/config.hpp> // BOOST_STATIC_CONST + +#include <boost/serialization/static_warning.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/level.hpp> +#include <boost/serialization/version.hpp> +#include <boost/serialization/nvp.hpp> + +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/text_oarchive.hpp> + +// track_selectivly with class information in the archive +// is unsafe when used with a pointer and should trigger a warning +struct check1 { + template<class Archive> + void serialize(Archive & ar, const unsigned int version); + check1(){} +}; + +BOOST_CLASS_IMPLEMENTATION(check1, boost::serialization::object_serializable) +BOOST_CLASS_TRACKING(check1, boost::serialization::track_selectively) + +// the combination of versioning + no class information +// should trigger a warning +struct check2 { + template<class Archive> + void serialize(Archive & ar, const unsigned int version); + check2(){} +}; + +BOOST_CLASS_IMPLEMENTATION(check2, boost::serialization::object_serializable) +BOOST_CLASS_VERSION(check2, 1) +// use track always to turn off warning tested above +BOOST_CLASS_TRACKING(check2, boost::serialization::track_always) + +// serializing a type marked as "track_never" through a pointer +// is likely an error +struct check3 { + template<class Archive> + void serialize(Archive & ar, const unsigned int version); + check3(){} +}; + +BOOST_CLASS_TRACKING(check3, boost::serialization::track_never) + +template<class T> +int f(){ + BOOST_STATIC_WARNING(T::value); + BOOST_STATIC_ASSERT(T::value); + return 0; +} + +///////////////////////////////////////////////////////////////////////// +// compilation of this program should show a total of 10 warning messages +int main(int /* argc */, char * /* argv */[]){ + std::stringstream s; + { + boost::archive::text_oarchive oa(s); + + check1 const c1_out; + oa << c1_out; + + check1 c1_non_const_out; + oa << c1_non_const_out; // warn check_object_tracking + + check1 * const c1_ptr_out = 0; + oa << c1_ptr_out; // warn check_pointer_level + + check2 const * c2_ptr_out; + oa << c2_ptr_out; // error check_object_versioning + + check3 * const c3_ptr_out = 0; + oa << c3_ptr_out; // warning check_pointer_tracking + + check2 const c2_out; + oa << c2_out; // error check_object_versioning + } + { + boost::archive::text_iarchive ia(s); + + check1 const c1_in; + ia >> c1_in; // check_const_loading + + check1 * c1_ptr_in = 0; + ia >> c1_ptr_in; // warn check_pointer_level + + check2 * c2_ptr_in; + ia >> c2_ptr_in; // error check_object_versioning + + check3 * c3_ptr_in = 0; + ia >> c3_ptr_in; // warning check_pointer_tracking + + check2 c2_in; + ia >> c2_in; // error check_object_versioning + } + { + boost::archive::text_oarchive oa(s); + + check1 const c1_out; + oa << BOOST_SERIALIZATION_NVP(c1_out); + + check1 c1_non_const_out; + oa << BOOST_SERIALIZATION_NVP(c1_non_const_out); // warn check_object_tracking + + check1 * const c1_ptr_out = 0; + oa << BOOST_SERIALIZATION_NVP(c1_ptr_out); // warn check_pointer_level + + check2 const * c2_ptr_out; + oa << BOOST_SERIALIZATION_NVP(c2_ptr_out); // error check_object_versioning + + check3 * const c3_ptr_out = 0; + oa << BOOST_SERIALIZATION_NVP(c3_ptr_out); // warning check_pointer_tracking + + check2 const c2_out; + oa << BOOST_SERIALIZATION_NVP(c2_out); // error check_object_versioning + } + { + boost::archive::text_iarchive ia(s); + + check1 const c1_in; + ia >> BOOST_SERIALIZATION_NVP(c1_in); // check_const_loading + + check1 * c1_ptr_in = 0; + ia >> BOOST_SERIALIZATION_NVP(c1_ptr_in); // warn check_pointer_level + + check2 * c2_ptr_in; + ia >> BOOST_SERIALIZATION_NVP(c2_ptr_in); // error check_object_versioning + + check3 * c3_ptr_in = 0; + ia >> BOOST_SERIALIZATION_NVP(c3_ptr_in); // warning check_pointer_tracking + + check2 c2_in; + ia >> BOOST_SERIALIZATION_NVP(c2_in); // error check_object_versioning + } + return 0; +} diff --git a/src/boost/libs/serialization/test/test_class_info_load.cpp b/src/boost/libs/serialization/test/test_class_info_load.cpp new file mode 100644 index 000000000..fd4e92f47 --- /dev/null +++ b/src/boost/libs/serialization/test/test_class_info_load.cpp @@ -0,0 +1,92 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_class_info_load.cpp: test implementation level trait + +// (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) + +// test implementation level "object_class_info" +// should pass compilation and execution + +#include <string> +#include <fstream> + +#include <boost/archive/tmpdir.hpp> +#include <boost/preprocessor/stringize.hpp> +#include "test_tools.hpp" + +#include <boost/static_assert.hpp> +#include <boost/serialization/level.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/version.hpp> +#include <boost/serialization/nvp.hpp> + +class A +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /*ar*/, const unsigned int file_version){ + // class that don't save class info always have a version number of 0 + BOOST_CHECK(file_version == 0); + BOOST_STATIC_ASSERT(0 == ::boost::serialization::version<A>::value); + ++count; + } +public: + unsigned int count; + A() : count(0) {} +}; + +BOOST_CLASS_IMPLEMENTATION(A, ::boost::serialization::object_serializable) +BOOST_CLASS_TRACKING(A, ::boost::serialization::track_never) + +// second case : serialize WITH class information +class B +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /*ar*/, const unsigned int file_version){ + // verify at execution that the version number corresponds to the saved + // one + BOOST_CHECK(file_version == 2); + ++count; + } +public: + unsigned int count; + B() : count(0) {} +}; + +BOOST_CLASS_IMPLEMENTATION(B, ::boost::serialization::object_class_info) +BOOST_CLASS_TRACKING(B, ::boost::serialization::track_never) +BOOST_CLASS_VERSION(B, 4) + +void in(const char *testfile, A & a, B & b) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a); + ia >> BOOST_SERIALIZATION_NVP(a); + BOOST_CHECK(a.count == 2); // no tracking => redundant loads + ia >> BOOST_SERIALIZATION_NVP(b); + ia >> BOOST_SERIALIZATION_NVP(b); + // note: archive was saved with tracking so that is what determines + // whether tracking is perform on load - regardless of the latest + // tracking setting. + BOOST_CHECK(b.count == 1); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + A a; + B b; + std::string filename; + filename += boost::archive::tmpdir(); + filename += '/'; + filename += BOOST_PP_STRINGIZE(testfile_); + filename += BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST); + in(filename.c_str(), a, b); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_class_info_save.cpp b/src/boost/libs/serialization/test/test_class_info_save.cpp new file mode 100644 index 000000000..a2590bf8f --- /dev/null +++ b/src/boost/libs/serialization/test/test_class_info_save.cpp @@ -0,0 +1,100 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_class_info_save.cpp: test implementation level trait + +// (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) + +// test implementation level "object_class_info" +// should pass compilation and execution + +#include <fstream> +#include <string> + +#include <boost/static_assert.hpp> +#include <boost/archive/tmpdir.hpp> +#include <boost/preprocessor/stringize.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/level.hpp> +#include <boost/serialization/version.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/nvp.hpp> + +// first case : serialize WITHOUT class information +class A +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /*ar*/, const unsigned int file_version){ + // class that don't save class info always have a version number of 0 + BOOST_CHECK(file_version == 0); + BOOST_STATIC_ASSERT(0 == ::boost::serialization::version<A>::value); + ++count; + } +public: + unsigned int count; + A() : count(0) {} +}; + +BOOST_CLASS_IMPLEMENTATION(A, ::boost::serialization::object_serializable) +BOOST_CLASS_TRACKING(A, ::boost::serialization::track_never) + +// second case : serialize WITH class information +// note: GCC compile fails if this is after the class declaration +class B; +BOOST_CLASS_VERSION(B, 2) + +class B +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /*ar*/, const unsigned int file_version){ + // verify at execution that correct version number is passed on save + BOOST_CHECK( + static_cast<const int>(file_version) + == ::boost::serialization::version<B>::value + ); + ++count; + } +public: + unsigned int count; + B() : count(0) {} +}; + +BOOST_CLASS_IMPLEMENTATION(B, ::boost::serialization::object_class_info) +BOOST_CLASS_TRACKING(B, boost::serialization::track_always) + +#include <iostream> + +void out(const char *testfile, const A & a, const B & b) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + // write object twice to check tracking + oa << BOOST_SERIALIZATION_NVP(a); + oa << BOOST_SERIALIZATION_NVP(a); + BOOST_CHECK(a.count == 2); // no tracking => redundant saves + std::cout << "a.count=" << a.count << '\n' ; + oa << BOOST_SERIALIZATION_NVP(b); + oa << BOOST_SERIALIZATION_NVP(b); + BOOST_CHECK(b.count == 1); // tracking => no redundant saves + std::cout << "b.count=" << b.count << '\n' ; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + A a; + B b; + std::string filename; + filename += boost::archive::tmpdir(); + filename += '/'; + filename += BOOST_PP_STRINGIZE(testfile_); + filename += BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST); + out(filename.c_str(), a, b); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_codecvt_null.cpp b/src/boost/libs/serialization/test/test_codecvt_null.cpp new file mode 100644 index 000000000..11e434c52 --- /dev/null +++ b/src/boost/libs/serialization/test/test_codecvt_null.cpp @@ -0,0 +1,124 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_codecvt_null.cpp + +// (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) + +// should pass compilation and execution. Note: compilation with compilers +// which use wchar_t as 2 byte objects will emit warnings. These should be +// ignored. + +#include <algorithm> // std::copy +#include <fstream> +#include <iostream> +#include <iterator> +#include <locale> +#include <vector> +#include <cstdio> // remove +#include <cstddef> // NULL, size_t + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/archive/codecvt_null.hpp> +#include <boost/archive/iterators/ostream_iterator.hpp> +#include <boost/archive/iterators/istream_iterator.hpp> + +template<std::size_t S> +struct test_data +{ + static wchar_t wchar_encoding[]; +}; + +template<> +wchar_t test_data<2>::wchar_encoding[] = { + (wchar_t) 0x0001, + (wchar_t) 0x007f, + (wchar_t) 0x0080, + (wchar_t) 0x07ff, + (wchar_t) 0x0800, + (wchar_t) 0x7fff +}; + +template<> +wchar_t test_data<4>::wchar_encoding[] = { + (wchar_t) 0x00000001, + (wchar_t) 0x0000007f, + (wchar_t) 0x00000080, + (wchar_t) 0x000007ff, + (wchar_t) 0x00000800, + (wchar_t) 0x0000ffff, + (wchar_t) 0x00010000, + (wchar_t) 0x0010ffff, + (wchar_t) 0x001fffff, + (wchar_t) 0x00200000, + (wchar_t) 0x03ffffff, + (wchar_t) 0x04000000, + (wchar_t) 0x7fffffff +}; + +#include <iostream> + +int test_main( int /* argc */, char* /* argv */[] ) { + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::locale old_loc; + std::locale null_locale = std::locale( + old_loc, + new boost::archive::codecvt_null<wchar_t> + ); + + typedef test_data<sizeof(wchar_t)> td; + { + std::wofstream ofs; + ofs.imbue(null_locale); + ofs.open(testfile, std::ios::binary); + std::copy( + td::wchar_encoding, + td::wchar_encoding + sizeof(td::wchar_encoding)/sizeof(wchar_t), + boost::archive::iterators::ostream_iterator<wchar_t>(ofs) + ); + } + bool ok = false; + { + std::wifstream ifs; + ifs.imbue(null_locale); + ifs.open(testfile, std::ios::binary); + ok = std::equal( + td::wchar_encoding, + td::wchar_encoding + sizeof(td::wchar_encoding)/sizeof(wchar_t), + boost::archive::iterators::istream_iterator<wchar_t>(ifs) + ); + } + + BOOST_CHECK(ok); + { + std::wofstream ofs("testfile2"); + ofs.imbue(null_locale); + int i = 10; + ofs << i; + ofs.close(); + + std::wifstream ifs("testfile2"); + ifs.imbue(null_locale); + int i2; + ifs >> i2; + std::cout << "i=" << i << std::endl; + std::cout << "i2=" << i2 << std::endl; + BOOST_CHECK(i == i2); + ifs.close(); + } + + std::remove(testfile); + return EXIT_SUCCESS; +} + diff --git a/src/boost/libs/serialization/test/test_complex.cpp b/src/boost/libs/serialization/test/test_complex.cpp new file mode 100644 index 000000000..7caca8717 --- /dev/null +++ b/src/boost/libs/serialization/test/test_complex.cpp @@ -0,0 +1,82 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_complex.cpp + +// (C) Copyright 2005 Matthias Troyer . +// 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) + +// should pass compilation and execution + +#include <fstream> + +#include <cstddef> // NULL +#include <cstdlib> // rand +#include <cstdio> // remove +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> +#include <boost/math/special_functions/next.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +#include <boost/limits.hpp> +namespace std{ + using ::rand; + using ::remove; + #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE) + using ::numeric_limits; + #endif +} +#endif + +#include "test_tools.hpp" + +#include <boost/preprocessor/stringize.hpp> +#include BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST) + +#include <boost/serialization/complex.hpp> + +#include <iostream> + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::complex<float> a( + static_cast<float>(std::rand()) / static_cast<float>(std::rand()), + static_cast<float>(std::rand()) / static_cast<float>(std::rand()) + ); + std::complex<double> b( + static_cast<double>(std::rand()) / static_cast<double>(std::rand()), + static_cast<double>(std::rand()) / static_cast<double>(std::rand()) + ); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os); + oa << boost::serialization::make_nvp("afloatcomplex", a); + oa << boost::serialization::make_nvp("adoublecomplex", b); + } + std::complex<float> a1; + std::complex<double> b1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is); + ia >> boost::serialization::make_nvp("afloatcomplex", a1); + ia >> boost::serialization::make_nvp("adoublecomplex", b1); + } + + std::cerr << "a.real()-a1a.real() distance = " << std::abs( boost::math::float_distance(a.real(), a1.real())) << std::endl; + BOOST_CHECK(std::abs(boost::math::float_distance(a.real(), a1.real())) < 2); + std::cerr << "a.imag() - a1a.imag() distance = " << std::abs( boost::math::float_distance(a.imag(), a1.imag())) << std::endl; + BOOST_CHECK(std::abs(boost::math::float_distance(a.imag(), a1.imag())) < 2); + std::cerr << "b.real() - b1.real() distance = " << std::abs( boost::math::float_distance(b.real(), b1.real())) << std::endl; + BOOST_CHECK(std::abs(boost::math::float_distance(b.real(), b1.real())) < 2); + std::cerr << "b.imag() - b1.imag() distance = " << std::abs( boost::math::float_distance(b.imag(), b1.imag())) << std::endl; + BOOST_CHECK(std::abs(boost::math::float_distance(b.imag(), b1.imag())) < 2); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_const_load_fail1.cpp b/src/boost/libs/serialization/test/test_const_load_fail1.cpp new file mode 100644 index 000000000..b756e6f56 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail1.cpp @@ -0,0 +1,23 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f1(text_iarchive & ia, const A & a){ + ia >> a; +} diff --git a/src/boost/libs/serialization/test/test_const_load_fail1_nvp.cpp b/src/boost/libs/serialization/test/test_const_load_fail1_nvp.cpp new file mode 100644 index 000000000..dc8d0f471 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail1_nvp.cpp @@ -0,0 +1,24 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f1(text_iarchive & ia, const A & a){ + ia >> BOOST_SERIALIZATION_NVP(a); +} diff --git a/src/boost/libs/serialization/test/test_const_load_fail2.cpp b/src/boost/libs/serialization/test/test_const_load_fail2.cpp new file mode 100644 index 000000000..06d213fa1 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail2.cpp @@ -0,0 +1,23 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_iarchive & ia, A * const & a){ + ia >> a; +} diff --git a/src/boost/libs/serialization/test/test_const_load_fail2_nvp.cpp b/src/boost/libs/serialization/test/test_const_load_fail2_nvp.cpp new file mode 100644 index 000000000..eadb0769f --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail2_nvp.cpp @@ -0,0 +1,25 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_iarchive & ia, A * const & a){ + ia >> BOOST_SERIALIZATION_NVP(a); +} + diff --git a/src/boost/libs/serialization/test/test_const_load_fail3.cpp b/src/boost/libs/serialization/test/test_const_load_fail3.cpp new file mode 100644 index 000000000..f804a8d00 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail3.cpp @@ -0,0 +1,22 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_iarchive & ia, const A * const & a){ + ia >> a; +} diff --git a/src/boost/libs/serialization/test/test_const_load_fail3_nvp.cpp b/src/boost/libs/serialization/test/test_const_load_fail3_nvp.cpp new file mode 100644 index 000000000..8995f3eb8 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_load_fail3_nvp.cpp @@ -0,0 +1,24 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_iarchive & ia, const A * const & a){ + ia >> BOOST_SERIALIZATION_NVP(a); +} diff --git a/src/boost/libs/serialization/test/test_const_pass.cpp b/src/boost/libs/serialization/test/test_const_pass.cpp new file mode 100644 index 000000000..552d3acab --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_pass.cpp @@ -0,0 +1,54 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/nvp.hpp> + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +// should compile w/o problem +void f1(boost::archive::text_oarchive & oa, const A & a){ + oa & a; + oa & BOOST_SERIALIZATION_NVP(a); + oa << a; + oa << BOOST_SERIALIZATION_NVP(a); +} +void f2(boost::archive::text_oarchive & oa, const A * const & a){ + oa & a; + oa & BOOST_SERIALIZATION_NVP(a); + oa << a; + oa << BOOST_SERIALIZATION_NVP(a); +} +void f3(boost::archive::text_iarchive & ia, A & a){ + ia & a; + ia & BOOST_SERIALIZATION_NVP(a); + ia >> a; + ia >> BOOST_SERIALIZATION_NVP(a); +} +void f4(boost::archive::text_iarchive & ia, A * & a){ + ia & a; + ia & BOOST_SERIALIZATION_NVP(a); + ia >> a; + ia >> BOOST_SERIALIZATION_NVP(a); +} +#if 0 +void f5(boost::archive::text_oarchive & oa, const A * & a){ + oa & a; + oa & BOOST_SERIALIZATION_NVP(a); + oa << a; + oa << BOOST_SERIALIZATION_NVP(a); +} +#endif + diff --git a/src/boost/libs/serialization/test/test_const_save_warn1.cpp b/src/boost/libs/serialization/test/test_const_save_warn1.cpp new file mode 100644 index 000000000..4e1625bcc --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn1.cpp @@ -0,0 +1,25 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +// should fail to compile +void f1(text_oarchive & oa, A & a){ + oa << a; +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn1_nvp.cpp b/src/boost/libs/serialization/test/test_const_save_warn1_nvp.cpp new file mode 100644 index 000000000..ffa9da596 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn1_nvp.cpp @@ -0,0 +1,26 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/tracking.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f1(text_oarchive & oa, A & a){ + oa << BOOST_SERIALIZATION_NVP(a); +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn2.cpp b/src/boost/libs/serialization/test/test_const_save_warn2.cpp new file mode 100644 index 000000000..d2955b616 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn2.cpp @@ -0,0 +1,24 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_oarchive & oa, A * & a){ + oa << a; +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn2_nvp.cpp b/src/boost/libs/serialization/test/test_const_save_warn2_nvp.cpp new file mode 100644 index 000000000..4a4d0388d --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn2_nvp.cpp @@ -0,0 +1,25 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f2(text_oarchive & oa, A * & a){ + oa << BOOST_SERIALIZATION_NVP(a); +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn3.cpp b/src/boost/libs/serialization/test/test_const_save_warn3.cpp new file mode 100644 index 000000000..55759cc74 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn3.cpp @@ -0,0 +1,24 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f3(text_oarchive & oa, const A * & a){ + oa << a; +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn3_nvp.cpp b/src/boost/libs/serialization/test/test_const_save_warn3_nvp.cpp new file mode 100644 index 000000000..fe8a9b0e2 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn3_nvp.cpp @@ -0,0 +1,25 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +void f3(text_oarchive & oa, const A * & a){ + oa << BOOST_SERIALIZATION_NVP(a); +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn4.cpp b/src/boost/libs/serialization/test/test_const_save_warn4.cpp new file mode 100644 index 000000000..53007165a --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn4.cpp @@ -0,0 +1,37 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +// comment out this test case as a reminder not to keep inserting it !!! +// we don't trap this as an error in order to permit things like +// X * xptr; +// save(..){ +// ar << xptr; +// } +// +// for rational - consider the following example from demo.cpp +// std::list<pair<trip_info, bus_route_info *> > schedule +// its not obvious to me how this can be cast to: +// std::list<pair<trip_info, const bus_route_info * const> > schedule + +void f4(text_oarchive & oa, A * const & a){ + oa << a; +} + diff --git a/src/boost/libs/serialization/test/test_const_save_warn4_nvp.cpp b/src/boost/libs/serialization/test/test_const_save_warn4_nvp.cpp new file mode 100644 index 000000000..3cb59d413 --- /dev/null +++ b/src/boost/libs/serialization/test/test_const_save_warn4_nvp.cpp @@ -0,0 +1,39 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +// compile only + +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/nvp.hpp> + +using namespace boost::archive; + +struct A { + template<class Archive> + void serialize(Archive & ar, unsigned int version) { + } +}; + +// comment out this test case as a reminder not to keep inserting it !!! +// we don't trap this as an error in order to permit things like +// X * xptr; +// save(..){ +// ar << xptr; +// } +// +// for rational - consider the following example from demo.cpp +// +// std::list<pair<trip_info, bus_route_info *> > schedule +// +// its not obvious to me how this can be cast to: +// +// std::list<pair<trip_info, const bus_route_info * const> > schedule + +void f4(text_oarchive & oa, A * const & a){ + oa << BOOST_SERIALIZATION_NVP(a); +} diff --git a/src/boost/libs/serialization/test/test_contained_class.cpp b/src/boost/libs/serialization/test/test_contained_class.cpp new file mode 100644 index 000000000..4830fa996 --- /dev/null +++ b/src/boost/libs/serialization/test/test_contained_class.cpp @@ -0,0 +1,69 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_contained_class.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/serialization/nvp.hpp> + +#include "B.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// Contained class +class C +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(b); + } + B b; +public: + bool operator==(const C &rhs) const + { + return b == rhs.b; + } + C(){} +}; + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const C c; + C c1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("c", c); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("c", c1); + } + BOOST_CHECK(c == c1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_cyclic_ptrs.cpp b/src/boost/libs/serialization/test/test_cyclic_ptrs.cpp new file mode 100644 index 000000000..cce8b6f9b --- /dev/null +++ b/src/boost/libs/serialization/test/test_cyclic_ptrs.cpp @@ -0,0 +1,204 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_cyclic_ptrs.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/core/no_exceptions_support.hpp> + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/version.hpp> +#include <boost/serialization/base_object.hpp> + +#include "A.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// class with a member which refers to itself +class J : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + ar & BOOST_SERIALIZATION_NVP(j); + } +public: + bool operator==(const J &rhs) const; + J *j; + J(J *_j) : j(_j) {} + J() : j(NULL){} +}; + +BOOST_CLASS_VERSION(J, 6) + +bool J::operator==(const J &rhs) const +{ + return static_cast<const A &>(*this) == static_cast<const A &>(rhs); +} + +/////////////////////////////////////////////////////// +// class with members that refer to each other +// this is an example of a class that, as written, cannot +// be serialized with this system. The problem is that the +// serialization of the first member - j1 , provokes serialization +// of those objects which it points to either directly or indirectly. +// When those objects are subsequently serialized, it is discovered +// that have already been serialized through pointers. This is +// detected by the system and an exception - pointer_conflict - +// is thrown. Permiting this to go undetected would result in the +// creation of multiple equal objects rather than the original +// structure. +class K +{ + J j1; + J j2; + J j3; + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive &ar, + const unsigned int /* file_version */ + ){ + ar & BOOST_SERIALIZATION_NVP(j1); + ar & BOOST_SERIALIZATION_NVP(j2); + ar & BOOST_SERIALIZATION_NVP(j3); + } +public: + bool operator==(const K &rhs) const; + K(); +}; + +K::K() +: j1(&j2), j2(&j3), j3(&j1) +{ +} + +bool K::operator==(const K &rhs) const +{ + return + j1.j == & j2 + && j2.j == & j3 + && j3.j == & j1 + && j1 == rhs.j1 + && j2 == rhs.j2 + && j3 == rhs.j3 + ; +} + +int test1(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + J j1, j2; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(j1); + } + { + // try to read the archive + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(j2); + } + BOOST_CHECK(j1 == j2); + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test2(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + J *j1 = new J; + j1->j = j1; + J *j2 = reinterpret_cast<J *>(0xBAADF00D); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(j1); + } + { + // try to read the archive + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(j2); + } + BOOST_CHECK(*j1 == *j2); + delete j1; + BOOST_CHECK(j2 == j2->j); + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test3(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + K k; + boost::archive::archive_exception exception( + boost::archive::archive_exception::no_exception + ); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + BOOST_TRY { + oa << BOOST_SERIALIZATION_NVP(k); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + exception = ae; + } + BOOST_CATCH_END + BOOST_CHECK( + exception.code == boost::archive::archive_exception::pointer_conflict + ); + } + // if exception wasn't invoked + if(exception.code == boost::archive::archive_exception::no_exception){ + // try to read the archive + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + exception = boost::archive::archive_exception( + boost::archive::archive_exception::no_exception + ); + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(k); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + exception = ae; + } + BOOST_CATCH_END + BOOST_CHECK( + exception.code == boost::archive::archive_exception::pointer_conflict + ); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test_main( int /* argc */, char* /* argv */[] ){ + test1(); + test2(); + test3(); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_delete_pointer.cpp b/src/boost/libs/serialization/test/test_delete_pointer.cpp new file mode 100644 index 000000000..80493e041 --- /dev/null +++ b/src/boost/libs/serialization/test/test_delete_pointer.cpp @@ -0,0 +1,119 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_delete_pointer.cpp + +// (C) Copyright 2002 Vahan Margaryan. +// 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 <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/core/no_exceptions_support.hpp> +#include <boost/serialization/throw_exception.hpp> + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/split_member.hpp> + +//A holds a pointer to another A, but doesn't own the pointer. +//objCount +class A +{ + friend class boost::serialization::access; + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + ar << BOOST_SERIALIZATION_NVP(next_); + } + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + ar >> BOOST_SERIALIZATION_NVP(next_); + ++loadcount; + } + BOOST_SERIALIZATION_SPLIT_MEMBER() +public: + A() + { + if(test && objcount == 3) + boost::serialization::throw_exception(boost::archive::archive_exception( + boost::archive::archive_exception::no_exception + )); + next_ = 0; + ++objcount; + } + ~A(){ + delete next_; + --objcount; + } + A* next_; + static int objcount; + static bool test; + static int loadcount; +}; + + +int A::objcount = 0; +int A::loadcount = 0; +bool A::test = false; + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + + //fill the vector with chained A's. The vector is assumed + //to own the objects - we will destroy the objects through this vector. + + A * head = new A; + A* last = head; + unsigned int i; + for(i = 1; i < 9; ++i) + { + A *a = new A; + last->next_ = a; + last = a; + } + + const char * testfile = boost::archive::tmpnam(0); + BOOST_REQUIRE(NULL != testfile); + + //output the list + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(head); + } + + delete head; + BOOST_CHECK(A::objcount == 0); + + head = NULL; + A::test = true; + //read the list back + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(head); + } + BOOST_CATCH (...){ + ia.delete_created_pointers(); + } + BOOST_CATCH_END + } + + //identify the leaks + BOOST_CHECK(A::loadcount == 0); + std::remove(testfile); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_deque.cpp b/src/boost/libs/serialization/test/test_deque.cpp new file mode 100644 index 000000000..37ab90a33 --- /dev/null +++ b/src/boost/libs/serialization/test/test_deque.cpp @@ -0,0 +1,55 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_deque.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/deque.hpp> + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::deque<A> adeque, adeque1; + adeque.push_front(A()); + adeque.push_front(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("adeque",adeque); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("adeque",adeque1); + } + BOOST_CHECK(adeque == adeque1); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_derived.cpp b/src/boost/libs/serialization/test/test_derived.cpp new file mode 100644 index 000000000..fb378e210 --- /dev/null +++ b/src/boost/libs/serialization/test/test_derived.cpp @@ -0,0 +1,148 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_derived.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/type_info_implementation.hpp> + +class base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ + } +public: + virtual ~base(){}; +}; + +class derived1 : public base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } +}; + +class derived2 : public base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } +}; + +// save non-polymorphic classes through a base class pointer +void save_derived(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + // registration not necessary when serializing the most derived pointer + derived1 *d1 = new derived1; + derived2 *d2 = new derived2; + oa << BOOST_SERIALIZATION_NVP(d1) << BOOST_SERIALIZATION_NVP(d2); + + // upcasting non-polymorphic pointers may not lead to the expected + // result. In the current type id system + base *b1 = d1; + base *b2 = d2; + + // Warning, the current type id system does not yield true + // type id for non-polymorphic types + const boost::serialization::extended_type_info & this_type + = boost::serialization::type_info_implementation<base>::type + ::get_const_instance(); + // retrieve the true type of the object pointed to + const boost::serialization::extended_type_info & true_type + = * boost::serialization::type_info_implementation<base>::type + ::get_const_instance().get_derived_extended_type_info(*b1); + + BOOST_WARN_MESSAGE( + !(this_type == true_type), + "current type id system does not support non-polymorphic types" + ); + + oa << BOOST_SERIALIZATION_NVP(b1); + oa << BOOST_SERIALIZATION_NVP(b2); + + delete d1; + delete d2; +} + +// save non-polymorphic classes through a base class pointer +void load_derived(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + // registration not necessary when serializing the most derived pointer + derived1 *d1 = NULL; + derived2 *d2 = NULL; + ia >> BOOST_SERIALIZATION_NVP(d1) >> BOOST_SERIALIZATION_NVP(d2); + + // upcasting non-polymorphic pointers may not lead to the expected + // result. In the current type id system + base *b1 = NULL; + base *b2 = NULL; + + // note: this will produce incorrect results for non-polymorphic classes + ia >> BOOST_SERIALIZATION_NVP(b1); + ia >> BOOST_SERIALIZATION_NVP(b2); + + // Warning, the current type id system does not yield true + // type id for non-polymorphic types + const boost::serialization::extended_type_info & this_type + = boost::serialization::type_info_implementation<base>::type + ::get_const_instance(); + // retrieve the true type of the object pointed to + const boost::serialization::extended_type_info & true_type + = * boost::serialization::type_info_implementation<base>::type + ::get_const_instance().get_derived_extended_type_info(*b1); + + BOOST_WARN_MESSAGE( + ! (this_type == true_type), + "current type id system does fails for non-polymorphic types" + ); + + BOOST_CHECK(b1 == static_cast<base *>(d1)); + BOOST_CHECK(b2 == static_cast<base *>(d2)); + + delete d1; + delete d2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save_derived(testfile); + load_derived(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_derived_class.cpp b/src/boost/libs/serialization/test/test_derived_class.cpp new file mode 100644 index 000000000..056c8ebec --- /dev/null +++ b/src/boost/libs/serialization/test/test_derived_class.cpp @@ -0,0 +1,49 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_derived_class.cpp + +// (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) + +// should pass compilation and execution + +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "B.hpp" +#include "A.ipp" + +int test_main( int /*argc*/, char* /*argv*/[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + + BOOST_REQUIRE(NULL != testfile); + + B b, b1; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("b", b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("b1", b1); + } + BOOST_CHECK(b == b1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_derived_class_ptr.cpp b/src/boost/libs/serialization/test/test_derived_class_ptr.cpp new file mode 100644 index 000000000..6749c8221 --- /dev/null +++ b/src/boost/libs/serialization/test/test_derived_class_ptr.cpp @@ -0,0 +1,52 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_deriviec_class_.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "B.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + B * tb = new B; + B * tb1 = NULL; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("tb", tb); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("tb",tb1); + } + BOOST_CHECK(tb != tb1); + BOOST_CHECK(*tb == *tb1); + delete tb; + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_diamond.cpp b/src/boost/libs/serialization/test/test_diamond.cpp new file mode 100644 index 000000000..9eaf4577a --- /dev/null +++ b/src/boost/libs/serialization/test/test_diamond.cpp @@ -0,0 +1,205 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_diamond.cpp + +// (C) Copyright 2002-2009 Vladimir Prus and Robert Ramey. +// 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) + +// test of serialization library for diamond inheritence situations + +#include <cstddef> // NULL +#include <fstream> +#include <iostream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/map.hpp> +#include <boost/serialization/utility.hpp> +#include <boost/serialization/split_member.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> + +int save_count = 0; // used to detect when base class is saved multiple times +int load_count = 0; // used to detect when base class is loaded multiple times + +class base { +public: + base() : i(0) {} + base(int i) : i(i) + { + m[i] = "text"; + } + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving base\n"; + ar << BOOST_SERIALIZATION_NVP(i); + ar << BOOST_SERIALIZATION_NVP(m); + ++save_count; + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring base\n"; + ar >> BOOST_SERIALIZATION_NVP(i); + ar >> BOOST_SERIALIZATION_NVP(m); + ++load_count; + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() + + bool operator==(const base& another) const + { + return i == another.i && m == another.m; + } + // make polymorphic by marking at least one function virtual + virtual ~base() {}; +private: + int i; + std::map<int, std::string> m; +}; + +// note: the default is for object tracking to be performed if and only +// if and object of the corresponding class is anywhere serialized +// through a pointer. In this example, that doesn't occur so +// by default, the shared base object wouldn't normally be tracked. +// This would leave to multiple save/load operation of the data in +// this shared base class. This wouldn't cause an error, but it would +// be a waste of time. So set the tracking behavior trait of the base +// class to always track serialized objects of that class. This permits +// the system to detect and elminate redundent save/load operations. +// (It is concievable that this might someday be detected automatically +// but for now, this is not done so we have to rely on the programmer +// to specify this trait) +BOOST_CLASS_TRACKING(base, track_always) + +class derived1 : virtual public base { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving derived1\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring derived1\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class derived2 : virtual public base { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving derived2\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring derived2\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(base); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class final : public derived1, public derived2 { +public: + final() {} + final(int i) : base(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving final\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(derived1); + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(derived2); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring final\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(derived1); + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(derived2); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +BOOST_CLASS_EXPORT(final) + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const final b(3); + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("b", b); + } + + final b2; + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("b2", b2); + } + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(b2 == b); + std::remove(testfile); + + // do the same test with pointers + testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save_count = 0; + load_count = 0; + + const base* bp = new final( 3 ); + { + test_ostream ofs(testfile); + test_oarchive oa(ofs); + oa << BOOST_SERIALIZATION_NVP(bp); + } + + base* bp2; + { + test_istream ifs(testfile); + test_iarchive ia(ifs); + ia >> BOOST_SERIALIZATION_NVP(bp2); + } + + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(*bp2 == *bp); + delete bp; + std::remove(testfile); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_diamond_complex.cpp b/src/boost/libs/serialization/test/test_diamond_complex.cpp new file mode 100644 index 000000000..826c7fb8c --- /dev/null +++ b/src/boost/libs/serialization/test/test_diamond_complex.cpp @@ -0,0 +1,480 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_diamond.cpp + +// (C) Copyright 2002-2009 Vladimir Prus, Robert Ramey and Takatoshi Kondo. +// 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) + +// test of serialization library for diamond inheritence situations + +#include <cstddef> // NULL +#include <fstream> +#include <iostream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/map.hpp> +#include <boost/serialization/utility.hpp> +#include <boost/serialization/split_member.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> + +int save_count = 0; // used to detect when EXnLevel1 class is saved multiple times +int load_count = 0; // used to detect when EXnLevel1 class is loaded multiple times + +// inheritance structure +// +// EX1Level1<-+-EX1Level2_A<-+-+-EX1Level3_A +// | | | +// +-EX1Level2_B<-+ +-EX1Level3_B<--EX1Level4 +// +// EXPORT Sequence EX1Level3_A, EX1Level4 +//--------------------------------------------------------- +// EX2Level1<-+-EX2Level2_A<-+-+-EX2Level3_A +// | | | +// +-EX2Level2_B<-+ +-EX2Level3_B<--EX2Level4 +// +// EXPORT Sequence EX2Level4, EX2Level3_A + +class EX1Level1 { +public: + EX1Level1() : i(0) {} + EX1Level1(int i) : i(i) + { + m[i] = "text"; + } + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level1\n"; + ar << BOOST_SERIALIZATION_NVP(i); + ar << BOOST_SERIALIZATION_NVP(m); + ++save_count; + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level1\n"; + ar >> BOOST_SERIALIZATION_NVP(i); + ar >> BOOST_SERIALIZATION_NVP(m); + ++load_count; + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() + + bool operator==(const EX1Level1& another) const + { + return i == another.i && m == another.m; + } + // make polymorphic by marking at least one function virtual + virtual ~EX1Level1() {}; +private: + int i; + std::map<int, std::string> m; +}; + +// note: the default is for object tracking to be performed if and only +// if and object of the corresponding class is anywhere serialized +// through a pointer. In this example, that doesn't occur so +// by default, the shared EX1Level1 object wouldn't normally be tracked. +// This would leave to multiple save/load operation of the data in +// this shared EX1Level1 class. This wouldn't cause an error, but it would +// be a waste of time. So set the tracking behavior trait of the EX1Level1 +// class to always track serialized objects of that class. This permits +// the system to detect and elminate redundent save/load operations. +// (It is concievable that this might someday be detected automatically +// but for now, this is not done so we have to rely on the programmer +// to specify this trait) +BOOST_CLASS_TRACKING(EX1Level1, track_always) + +class EX1Level2_A : virtual public EX1Level1 { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level2_A\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level1); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level2_A\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level1); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX1Level2_B : virtual public EX1Level1 { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level2_B\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level1); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level2_B\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level1); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX1Level3_A : public EX1Level2_A, public EX1Level2_B { +public: + EX1Level3_A() {} + EX1Level3_A(int i) : EX1Level1(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level3_A\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_A); + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level3_A\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_A); + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + + +class EX1Level3_B : public EX1Level2_A, public EX1Level2_B { +public: + EX1Level3_B() {} + EX1Level3_B(int) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level3_B\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_A); + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level3_B\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_A); + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level2_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX1Level4 : public EX1Level3_B { +public: + EX1Level4() {} + EX1Level4(int i) : EX1Level1(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX1Level4\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level3_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX1Level4\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX1Level3_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + + +class EX2Level1 { +public: + EX2Level1() : i(0) {} + EX2Level1(int i) : i(i) + { + m[i] = "text"; + } + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level1\n"; + ar << BOOST_SERIALIZATION_NVP(i); + ar << BOOST_SERIALIZATION_NVP(m); + ++save_count; + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level1\n"; + ar >> BOOST_SERIALIZATION_NVP(i); + ar >> BOOST_SERIALIZATION_NVP(m); + ++load_count; + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() + + bool operator==(const EX2Level1& another) const + { + return i == another.i && m == another.m; + } + // make polymorphic by marking at least one function virtual + virtual ~EX2Level1() {}; +private: + int i; + std::map<int, std::string> m; +}; + +// note: the default is for object tracking to be performed if and only +// if and object of the corresponding class is anywhere serialized +// through a pointer. In this example, that doesn't occur so +// by default, the shared EX2Level1 object wouldn't normally be tracked. +// This would leave to multiple save/load operation of the data in +// this shared EX2Level1 class. This wouldn't cause an error, but it would +// be a waste of time. So set the tracking behavior trait of the EX2Level1 +// class to always track serialized objects of that class. This permits +// the system to detect and elminate redundent save/load operations. +// (It is concievable that this might someday be detected automatically +// but for now, this is not done so we have to rely on the programmer +// to specify this trait) +BOOST_CLASS_TRACKING(EX2Level1, track_always) + +class EX2Level2_A : virtual public EX2Level1 { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level2_A\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level1); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level2_A\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level1); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX2Level2_B : virtual public EX2Level1 { +public: + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level2_B\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level1); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level2_B\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level1); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX2Level3_A : public EX2Level2_A, public EX2Level2_B { +public: + EX2Level3_A() {} + EX2Level3_A(int i) : EX2Level1(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level3_A\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_A); + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level3_A\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_A); + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + + +class EX2Level3_B : public EX2Level2_A, public EX2Level2_B { +public: + EX2Level3_B() {} + EX2Level3_B(int i) : EX2Level1(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level3_B\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_A); + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level3_B\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_A); + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level2_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +class EX2Level4 : public EX2Level3_B { +public: + EX2Level4() {} + EX2Level4(int i) : EX2Level1(i) {} + + template<class Archive> + void save(Archive &ar, const unsigned int /* file_version */) const + { + std::cout << "Saving EX2Level4\n"; + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level3_B); + } + + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) + { + std::cout << "Restoring EX2Level4\n"; + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(EX2Level3_B); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +BOOST_CLASS_EXPORT(EX1Level4) +BOOST_CLASS_EXPORT(EX1Level3_A) + +BOOST_CLASS_EXPORT(EX2Level3_A) +BOOST_CLASS_EXPORT(EX2Level4) + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + { + save_count = 0; + load_count = 0; + + const EX1Level3_A ex1L3a_save(3); + const EX1Level1 *ex1L1_save = &ex1L3a_save; + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("ex1L1_save", ex1L1_save); + } + + EX1Level1 *ex1L1_load; + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("ex1L1_load", ex1L1_load); + } + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(*ex1L1_save == *ex1L1_load); + std::remove(testfile); + } + { + save_count = 0; + load_count = 0; + + const EX1Level4 ex1L4_save(3); + const EX1Level1 *ex1L1_save = &ex1L4_save; + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("ex1L1_save", ex1L1_save); + } + + EX1Level1 *ex1L1_load; + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("ex1L1_load", ex1L1_load); + } + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(*ex1L1_save == *ex1L1_load); + std::remove(testfile); + } + { + save_count = 0; + load_count = 0; + + const EX2Level3_A ex2L3a_save(3); + const EX2Level1 *ex2L1_save = &ex2L3a_save; + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("ex2L1_save", ex2L1_save); + } + + EX2Level1 *ex2L1_load; + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("ex2L1_load", ex2L1_load); + } + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(*ex2L1_save == *ex2L1_load); + std::remove(testfile); + } + { + save_count = 0; + load_count = 0; + + const EX2Level4 ex2L4_save(3); + const EX2Level1 *ex2L1_save = &ex2L4_save; + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("ex2L1_save", ex2L1_save); + } + + EX2Level1 *ex2L1_load; + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("ex2L1_load", ex2L1_load); + } + BOOST_CHECK(1 == save_count); + BOOST_CHECK(1 == load_count); + BOOST_CHECK(*ex2L1_save == *ex2L1_load); + std::remove(testfile); + } + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_dll_exported.cpp b/src/boost/libs/serialization/test/test_dll_exported.cpp new file mode 100644 index 000000000..69b996c51 --- /dev/null +++ b/src/boost/libs/serialization/test/test_dll_exported.cpp @@ -0,0 +1,137 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_dll_exported.cpp + +// (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) + +// should pass compilation and execution + +// This is an overly complex test. The purpose of this test is to +// demostrate and test the ability to serialize a hiarchy of class +// through a base class pointer even though those class might be +// implemente in different dlls and use different extended type info +// systems. +// +// polymorphic_ base is locally declared and defined. It use the +// "no_rtti" extended type info system. + +// polymorphic_derived1 is locally declared and defined. It uses +// the default "type_id" extended type info system + +// polymorphic_derived2 is declared in polymorphic_derived.hpp +// and defined in dll_polymorphic_derived2. It uses the typeid +// system. + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include "test_tools.hpp" + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/access.hpp> + +#define POLYMORPHIC_BASE_IMPORT +#include "polymorphic_base.hpp" + +#include "polymorphic_derived1.hpp" + +#define POLYMORPHIC_DERIVED2_IMPORT +#include "polymorphic_derived2.hpp" + +// save exported polymorphic class +void save_exported(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + + polymorphic_base *rb1 = new polymorphic_derived1; + polymorphic_base *rb2 = new polymorphic_derived2; + polymorphic_derived2 *rd21 = new polymorphic_derived2; + + // export will permit correct serialization + // through a pointer to a base class + oa_interface << BOOST_SERIALIZATION_NVP(rb1); + oa_interface << BOOST_SERIALIZATION_NVP(rb2); + oa_interface << BOOST_SERIALIZATION_NVP(rd21); + + delete rd21; + delete rb2; + delete rb1; +} + +// save exported polymorphic class +void load_exported(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + polymorphic_derived2 *rd21 = NULL; + + // export will permit correct serialization + // through a pointer to a base class + ia_interface >> BOOST_SERIALIZATION_NVP(rb1); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb1), + "restored pointer b1 not of correct type" + ); + ia_interface >> BOOST_SERIALIZATION_NVP(rb2); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + ia_interface >> BOOST_SERIALIZATION_NVP(rd21); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance().get_derived_extended_type_info(*rd21), + "restored pointer d2 not of correct type" + ); + delete rd21; + delete rb2; + delete rb1; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save_exported(testfile); + load_exported(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_dll_plugin.cpp b/src/boost/libs/serialization/test/test_dll_plugin.cpp new file mode 100644 index 000000000..c5c4a5fb9 --- /dev/null +++ b/src/boost/libs/serialization/test/test_dll_plugin.cpp @@ -0,0 +1,211 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_dll_plugin.cpp + +// (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) + +// should pass compilation and execution + +// Note this test creates, serializes, and destroys +// a class instance while knowing nothing more than its +// exported class ID (GUID) and a base class from which +// it is derived. This is referred to as a "plugin" +// since the same program could, without recompilation, +// manipulate any number of derived types - even those +// which have not been yet been created. + +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +// for now, only test with simple text and polymorphic archive +#include "test_tools.hpp" + +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/access.hpp> +#include <boost/serialization/void_cast.hpp> +#include <boost/serialization/extended_type_info.hpp> + +#include "polymorphic_base.hpp" + +// declare and implement a derived class in our own executable +class polymorphic_derived1 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } + const char * get_key() const{ + return + boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance().get_key(); + } +public: + virtual ~polymorphic_derived1(){} +}; + +// This class is derived from polymorphic_base which uses the no_rtti system +// rather than the typeid system. This system uses the exported name as the +// type identifier key. This MUST be exported!!! +BOOST_CLASS_EXPORT(polymorphic_derived1) + +// MWerks users can do this to make their code work +BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(polymorphic_base, polymorphic_derived1) + +// save exported polymorphic class +void save_exported(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = new polymorphic_derived1; + + // get the eti record for the exported type "polymorphic_derived2" + boost::serialization::extended_type_info const * const d2_eti = + boost::serialization::extended_type_info::find( + "polymorphic_derived2" + ); + assert(NULL != d2_eti); + + // create a new instance of the type referred to by this record. + // in this example, we happen to know that the class constructor + // takes no arguments. + void const * const rd2 = d2_eti->construct(); + assert(NULL != rd2); + + // transform the pointer to a pointer to the base class + polymorphic_base const * const rb2 + = static_cast<polymorphic_base const *>( + boost::serialization::void_upcast( + * d2_eti, + boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance(), + rd2 + ) + ); + + // export will permit correct serialization + // through a pointer to a base class + oa << BOOST_SERIALIZATION_NVP(rb1); + oa << BOOST_SERIALIZATION_NVP(rb2); + + // don't need these any more - don't leak memory + delete rb1; + // note delete original handle - not runtime cast one !!! + //delete rb2; + d2_eti->destroy(rd2); +} + +// save exported polymorphic class +void load_exported(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // export will permit correct serialization + // through a pointer to a base class + ia >> BOOST_SERIALIZATION_NVP(rb1); + + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb1), + "restored pointer b1 not of correct type" + ); + ia >> BOOST_SERIALIZATION_NVP(rb2); + + // get the eti record for the exported type "polymorphic_derived2" + boost::serialization::extended_type_info const * const d2_eti = + boost::serialization::extended_type_info::find( + "polymorphic_derived2" + ); + assert(NULL != d2_eti); + + BOOST_CHECK_MESSAGE( + * d2_eti + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + + delete rb1; + delete rb2; +} + +#ifdef BOOST_WINDOWS + +#define WIN32_LEAN_AND_MEAN +#include <TCHAR.H> +#include <windows.h> + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + HINSTANCE hDLL; // Handle to DLL + hDLL = LoadLibrary(_T("polymorphic_derived2.dll")); + BOOST_CHECK_MESSAGE( + (0 != hDLL), + "Failed to find/load polymorphic_derived2" + ); + if(0 == hDLL) + return EXIT_FAILURE; + + save_exported(testfile); + load_exported(testfile); + FreeLibrary(hDLL); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +#else // presume *nix + +#include <dlfcn.h> + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + void * hDLL; // Handle to DLL + hDLL = dlopen("polymorphic_derived2.so", RTLD_NOW | RTLD_GLOBAL); + BOOST_CHECK_MESSAGE((0 != hDLL), "Failed to find/load plugin_polymorphic_derived2" ); + BOOST_CHECK_MESSAGE((0 != hDLL), dlerror() ); + if(0 == hDLL) + return EXIT_FAILURE; + + save_exported(testfile); + load_exported(testfile); + dlclose(hDLL); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +#endif + +// EOF diff --git a/src/boost/libs/serialization/test/test_dll_simple.cpp b/src/boost/libs/serialization/test/test_dll_simple.cpp new file mode 100644 index 000000000..278d25c95 --- /dev/null +++ b/src/boost/libs/serialization/test/test_dll_simple.cpp @@ -0,0 +1,247 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_dll_simple.cpp + +// (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) + +// should pass compilation and execution + +// invoke header for a custom archive test. + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +// for now, only test with simple text and polymorphic archive +#include "test_tools.hpp" +#include "text_archive.hpp" + +#include <boost/archive/polymorphic_text_oarchive.hpp> +#include <boost/archive/polymorphic_text_iarchive.hpp> + +#define A_IMPORT +#include "A.hpp" + +// simple class with text archive compiled in dll +void +test1(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A a; + A a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(a, a1); + + std::remove(testfile); +} + +// simple class with polymorphic archive compiled in dll +void +test2(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A a; + A a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & poa(oa); + poa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & pia(ia); + pia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(a, a1); + + std::remove(testfile); +} + +// simple class pointer with text archive compiled in dll +void +test3(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A *a = new A; + A *a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(*a, *a1); + + std::remove(testfile); + delete a; +} + +// simple class pointer with polymorphic archive compiled in dll +void +test4(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A *a = new A; + A *a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & poa(oa); + poa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & pia(ia); + pia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(*a, *a1); + + std::remove(testfile); + delete a; +} + +#include "B.hpp" + +// derived class with base text archive compiled in dll +void +test5(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const B b; + B b1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("b", b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("b", b1); + } + BOOST_CHECK_EQUAL(b, b1); + + std::remove(testfile); +} + +// derived class with base base compiled with polymorphic archive in dll +void +test6(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const B b; + B b1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & poa(oa); + poa << boost::serialization::make_nvp("b", b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & pia(ia); + pia >> boost::serialization::make_nvp("b", b1); + } + BOOST_CHECK_EQUAL(b, b1); + + std::remove(testfile); +} + +// derived class pointer with base text archive compiled in dll +void +test7(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const B *b = new B; + B *b1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("b", b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("b", b1); + } + BOOST_CHECK_EQUAL(*b, *b1); + + std::remove(testfile); + delete b; +} + +// derived class pointer with base polymorphic archive compiled in dll +void +test8(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const B *b = new B; + B *b1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_oarchive oa(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & poa(oa); + poa << boost::serialization::make_nvp("b", b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_text_iarchive ia(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & pia(ia); + pia >> boost::serialization::make_nvp("b", b1); + } + BOOST_CHECK_EQUAL(*b, *b1); + + std::remove(testfile); + delete b; +} + + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test7(); + test8(); + return EXIT_SUCCESS; +} + diff --git a/src/boost/libs/serialization/test/test_enable_shared_from_this.cpp b/src/boost/libs/serialization/test/test_enable_shared_from_this.cpp new file mode 100644 index 000000000..608837e22 --- /dev/null +++ b/src/boost/libs/serialization/test/test_enable_shared_from_this.cpp @@ -0,0 +1,195 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_enable_shared_from_this.cpp + +// (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) + +// This demonstrates a problem with boost::serialization and boost::enable_shared_from_this. +// (boost version 1.53) +// See boost TRAC ticket #9567 +// +// Given the following class structure: +// Base is a simple class +// Derived inherits from Base +// Derived also inherits from boost::enable_shared_from_this<Derived> +// Base and Derived implement boost::serialization +// +// When deserializing an instance of Derived into a vector of boost::shared_ptr<Derived>: +// Base and Derived members are reconstructed correctly. +// Derived::shared_from_this() works as expected. +// +// But when deserializing an instance of Derived into a vector of boost::shared_ptr<Base>: +// Base and Derived members are still reconstructed correctly. +// Derived::shared_from_this() throws a bad_weak_ptr exception. +// This is because enable_shared_from_this::weak_ptr is NOT reconstructed - It is zero. + +#include <sstream> + +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> + +#include <boost/enable_shared_from_this.hpp> +#include <boost/serialization/shared_ptr.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/split_free.hpp> + +#include "test_tools.hpp" + +#include <set> + +namespace boost { +namespace serialization { + +struct enable_shared_from_this_helper { + std::set<shared_ptr<void> > m_esfth; + void record(boost::shared_ptr<void> sp){ + m_esfth.insert(sp); + } +}; + +template<class Archive, class T> +void serialize( + Archive & ar, + boost::enable_shared_from_this<T> & t, + const unsigned int file_version +){ + enable_shared_from_this_helper & h = + ar.template get_helper< + enable_shared_from_this_helper + >(); + + shared_ptr<T> sp = t.shared_from_this(); + h.record(sp); +} + +} // serialization +} // boost + +class Base { + friend class boost::serialization::access; + + template<class Archive> + void serialize(Archive & ar, const unsigned int version) + { + ar & BOOST_SERIALIZATION_NVP(m_base); + } +protected: + Base() {} + virtual ~Base() {} // "virtual" forces RTTI, to enable serialization of Derived from Base pointer +public: + int m_base; +}; + +class Derived : public Base, public boost::enable_shared_from_this<Derived> { + friend class boost::serialization::access; + + template<class Archive> + void serialize(Archive & ar, const unsigned int version) + { + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( + boost::enable_shared_from_this<Derived> + ); + ar & BOOST_SERIALIZATION_NVP(m_derived); + } +public: + boost::shared_ptr<Derived> SharedPtr() { return shared_from_this(); } + int m_derived; + Derived() {} + ~Derived() {} +}; +// The following is required to enable serialization from Base pointer +BOOST_CLASS_EXPORT(Derived) + +// This test passes +void test_passes(){ + std::stringstream ss; + { + boost::shared_ptr<Derived> d(new Derived()); + d->m_base = 1; + d->m_derived = 2; + + // Get a raw pointer to Derived + Derived* raw_d = d.get(); + + // Verify base and derived members + BOOST_CHECK(raw_d->m_base==1); + BOOST_CHECK(raw_d->m_derived==2); + + // verify shared_from_this + BOOST_CHECK(d == raw_d->SharedPtr()); + + boost::archive::text_oarchive oa(ss); + oa & BOOST_SERIALIZATION_NVP(d); + } + { + // Deserialize it back into a vector of shared_ptr<Derived> + boost::shared_ptr<Derived> d; + ss.seekg(0); + boost::archive::text_iarchive ia(ss); + ia & BOOST_SERIALIZATION_NVP(d); + + // Get a raw pointer to Derived + Derived* raw_d = d.get(); + + // Verify base and derived members + BOOST_CHECK(raw_d->m_base==1); + BOOST_CHECK(raw_d->m_derived==2); + + // verify shared_from_this + BOOST_CHECK(d == raw_d->SharedPtr()); + } +} + +// This test fails +void test_fails(){ + std::stringstream ss; + { + boost::shared_ptr<Base> b(new Derived()); + Derived* raw_d1 = static_cast<Derived*>(b.get()); + raw_d1->m_base = 1; + raw_d1->m_derived = 2; + + // Get a raw pointer to Derived via shared_ptr<Base> + Derived* raw_d = static_cast<Derived*>(b.get()); + + // Verify base and derived members + BOOST_CHECK(raw_d->m_base==1); + BOOST_CHECK(raw_d->m_derived==2); + + // verify shared_from_this + boost::shared_ptr<Derived> d = raw_d->SharedPtr(); + BOOST_CHECK(d == b); + // Serialize the vector + boost::archive::text_oarchive oa(ss); + oa & BOOST_SERIALIZATION_NVP(b); + } + { + // Deserialize it back into a vector of shared_ptr<Base> + ss.seekg(0); + boost::archive::text_iarchive ia(ss); + boost::shared_ptr<Base> b; + ia & BOOST_SERIALIZATION_NVP(b); + + // Get a raw pointer to Derived via shared_ptr<Base> + Derived* raw_d = static_cast<Derived*>(b.get()); + // Verify base and derived members + BOOST_CHECK(raw_d->m_base==1); + BOOST_CHECK(raw_d->m_derived==2); + + // verify shared_from_this + // FAIL: The following line throws bad_weak_ptr exception + boost::shared_ptr<Derived> d = raw_d->SharedPtr(); + BOOST_CHECK(d == b); + } +} + +int test_main(int /*argc*/, char * /*argv */[]){ + test_fails(); + test_passes(); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_exported.cpp b/src/boost/libs/serialization/test/test_exported.cpp new file mode 100644 index 000000000..2134c6c30 --- /dev/null +++ b/src/boost/libs/serialization/test/test_exported.cpp @@ -0,0 +1,104 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_exported.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/base_object.hpp> + +#include "test_tools.hpp" + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include "polymorphic_derived1.hpp" +#include "polymorphic_derived2.hpp" + +// save exported polymorphic class +void save_exported(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + + const polymorphic_base *rb1 = new polymorphic_derived1; + const polymorphic_base *rb2 = new polymorphic_derived2; + + // export will permit correct serialization + // through a pointer to a base class + std::cout << "saving polymorphic_derived1 (no_rtti)\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rb1); + + std::cout << "saving polymorphic_derived2\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rb2); + + delete rb1; + delete rb2; +} + +// save exported polymorphic class +void load_exported(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // export will permit correct serialization + // through a pointer to a base class + ia_interface >> BOOST_SERIALIZATION_NVP(rb1); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb1), + "restored pointer b1 not of correct type" + ); + + ia_interface >> BOOST_SERIALIZATION_NVP(rb2); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == + * boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + + delete rb1; + delete rb2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save_exported(testfile); + load_exported(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_forward_list.cpp b/src/boost/libs/serialization/test/test_forward_list.cpp new file mode 100644 index 000000000..ac8af3d9b --- /dev/null +++ b/src/boost/libs/serialization/test/test_forward_list.cpp @@ -0,0 +1,51 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_forward_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/config.hpp> +#include <boost/serialization/forward_list.hpp> + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + std::forward_list<A> aslist; + aslist.push_front(A()); + aslist.push_front(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aslist", aslist); + } + std::forward_list<A> aslist1;{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aslist", aslist1); + } + BOOST_CHECK(aslist == aslist1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF + diff --git a/src/boost/libs/serialization/test/test_forward_list_ptrs.cpp b/src/boost/libs/serialization/test/test_forward_list_ptrs.cpp new file mode 100644 index 000000000..a5bfab084 --- /dev/null +++ b/src/boost/libs/serialization/test/test_forward_list_ptrs.cpp @@ -0,0 +1,94 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/type_traits/is_pointer.hpp> +#include <boost/static_assert.hpp> +#include <boost/checked_delete.hpp> + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> + +#include "A.hpp" +#include "A.ipp" + +template<class T> +struct ptr_equal_to { + BOOST_STATIC_ASSERT(::boost::is_pointer< T >::value); + bool operator()(T const _Left, T const _Right) const + { + if(NULL == _Left && NULL == _Right) + return true; + if(typeid(*_Left) != typeid(*_Right)) + return false; + return *_Left == *_Right; + } +}; + +#include <boost/serialization/forward_list.hpp> +void test_forward_list(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::forward_list<A *> aslist; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + aslist.push_front(new A); + aslist.push_front(new A); + oa << boost::serialization::make_nvp("aslist", aslist); + } + std::forward_list<A *> aslist1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aslist", aslist1); + BOOST_CHECK( + std::equal( + aslist.begin(), + aslist.end(), + aslist1.begin(), + ptr_equal_to<A *>() + ) + ); + } + std::for_each( + aslist.begin(), + aslist.end(), + boost::checked_deleter<A>() + ); + std::for_each( + aslist1.begin(), + aslist1.end(), + boost::checked_deleter<A>() + ); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_forward_list(); + + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_helper_support.cpp b/src/boost/libs/serialization/test/test_helper_support.cpp new file mode 100644 index 000000000..b216543ba --- /dev/null +++ b/src/boost/libs/serialization/test/test_helper_support.cpp @@ -0,0 +1,129 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_helper_support.cpp + +// (C) Copyright 2008 Joaquin M Lopez Munoz. +// 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) + +// should pass compilation and execution + +#include <algorithm> +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/lexical_cast.hpp> +#include <boost/serialization/split_free.hpp> +#include <boost/serialization/vector.hpp> +#include <string> +#include <vector> + +// this test uses a special string (my_string) whose contents are shared +// and hence saved in the archive only once. We need a helper in order +// to convert my_string into a serializable type + +class my_string:public std::string +{ + typedef std::string super; + +public: + my_string(){} + my_string(const super & str): super(str){} + my_string & operator=(const super& rhs) { + super::operator=(rhs); + return *this; + } +}; + +struct my_string_helper +{ + typedef std::vector<my_string> table; + table m_t; +}; + +BOOST_SERIALIZATION_SPLIT_FREE(my_string) + +namespace boost { +namespace serialization { + +template<class Archive> +void save(Archive & ar, const my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, const my_string &, const unsigned int) = & save; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + my_string_helper::table::iterator it = std::find(t.begin(), t.end(), str); + if(it == t.end()){ + my_string_helper::table::size_type s = t.size(); + ar << make_nvp("index", s); + t.push_back(str); + ar << make_nvp("string", static_cast<const std::string &>(str)); + } + else{ + my_string_helper::table::size_type s = it - t.begin(); + ar << make_nvp("index", s); + } +} + +template<class Archive> +void load(Archive & ar, my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, my_string &, const unsigned int) = & load; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + + my_string_helper::table::size_type s; + ar >> make_nvp("index", s); + t.reserve(s); + if(s >= t.size()){ + std::string tmp; + ar >> make_nvp("string", tmp); + str = tmp; + t.push_back(str); + } + else{ + str = t[s]; + } +} + +} // namespace serialization +} // namespace boost + +int test_main( int /* argc */, char* /* argv */[] ){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::vector<my_string> v1; + for(int i=0; i<1000; ++i){ + v1.push_back(my_string(boost::lexical_cast<std::string>(i % 100))); + } + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("vector", v1); + } + { + std::vector<my_string> v2; + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("vector", v2); + BOOST_CHECK(v1 == v2); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_inclusion.cpp b/src/boost/libs/serialization/test/test_inclusion.cpp new file mode 100644 index 000000000..f42639a69 --- /dev/null +++ b/src/boost/libs/serialization/test/test_inclusion.cpp @@ -0,0 +1,43 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/level.hpp> +#include <boost/serialization/level_enum.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/split_free.hpp> +#include <boost/serialization/split_member.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/tracking_enum.hpp> +#include <boost/serialization/traits.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/version.hpp> +#include <boost/serialization/singleton.hpp> + +struct foo +{ + int x; +private: + friend class boost::serialization::access; + + template<class Archive> + void serialize(Archive & ar, const unsigned int version) + { + // In compilers implementing 2-phase lookup, the call to + // make_nvp is resolved even if foo::serialize() is never + // instantiated. + ar & boost::serialization::make_nvp("x",x); + } +}; + +int +main(int /*argc*/, char * /*argv*/[]){ + return 0; +} diff --git a/src/boost/libs/serialization/test/test_inclusion2.cpp b/src/boost/libs/serialization/test/test_inclusion2.cpp new file mode 100644 index 000000000..dfecccdcf --- /dev/null +++ b/src/boost/libs/serialization/test/test_inclusion2.cpp @@ -0,0 +1,25 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_const.cpp + +// (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) + +#include <boost/archive/binary_iarchive.hpp> +#include <boost/serialization/vector.hpp> +#include <sstream> +#include <vector> + +void f() +{ + std::stringstream iss; + boost::archive::binary_iarchive ar(iss); + std::vector<int> out; + ar >> out; +} + +int +main(int /*argc*/, char * /*argv*/[]){ + return 0; +} diff --git a/src/boost/libs/serialization/test/test_interators.cpp b/src/boost/libs/serialization/test/test_interators.cpp new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/src/boost/libs/serialization/test/test_interators.cpp diff --git a/src/boost/libs/serialization/test/test_interrupts.cpp b/src/boost/libs/serialization/test/test_interrupts.cpp new file mode 100644 index 000000000..6dd599dd7 --- /dev/null +++ b/src/boost/libs/serialization/test/test_interrupts.cpp @@ -0,0 +1,147 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_array.cpp + +// (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) + +// should pass compilation and execution + +#include <stdlib.h> + +#include <boost/config.hpp> +#include <cstddef> +#include <fstream> +#include <algorithm> // equal +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/split_member.hpp> +#include <boost/core/no_exceptions_support.hpp> +#include <boost/archive/archive_exception.hpp> + +struct test_dummy_out { + template<class Archive> + void save(Archive &, const unsigned int /*version*/) const { + throw boost::archive::archive_exception( + boost::archive::archive_exception::other_exception + ); + } + template<class Archive> + void load(Archive & ar, const unsigned int version){ + } + BOOST_SERIALIZATION_SPLIT_MEMBER() + test_dummy_out(){} +}; + +template<class T> +int test_out(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const T t; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + { + BOOST_TRY { + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + oa << BOOST_SERIALIZATION_NVP(t); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + BOOST_CHECK( + boost::archive::archive_exception::other_exception + == ae.code + ); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){} + BOOST_CATCH_END + } + os.close(); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +struct test_dummy_in { + template<class Archive> + void save(Archive & /* ar */, const unsigned int /*version*/) const { + } + template<class Archive> + void load(Archive & /* ar */, const unsigned int /*version*/){ + throw boost::archive::archive_exception( + boost::archive::archive_exception::other_exception + ); + } + BOOST_SERIALIZATION_SPLIT_MEMBER() + test_dummy_in(){} +}; + +template<class T> +int test_in(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const T t; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + { + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(t); + } + os.close(); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + { + T t1; + BOOST_TRY { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(t1); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + BOOST_CHECK( + boost::archive::archive_exception::other_exception + == ae.code + ); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){} + BOOST_CATCH_END + } + is.close(); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + int res; + res = test_out<test_dummy_out>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + res = test_in<test_dummy_in>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_iterators.cpp b/src/boost/libs/serialization/test/test_iterators.cpp new file mode 100644 index 000000000..259e24672 --- /dev/null +++ b/src/boost/libs/serialization/test/test_iterators.cpp @@ -0,0 +1,257 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_iterators.cpp + +// (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) + +//#include <algorithm> // std::copy, std::equal +#include <vector> +#include <cstdlib> // for rand +#include <functional> +#include <sstream> // used to test stream iterators +#include <clocale> +#include <iterator> // begin +#include <locale> // setlocale + +#include <boost/config.hpp> +#ifdef BOOST_NO_STDC_NAMESPACE +namespace std{ + using ::rand; +} +#endif + +#include <boost/detail/workaround.hpp> +#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) +#include <boost/archive/dinkumware.hpp> +#endif + +#ifndef BOOST_NO_CWCHAR +#include <boost/archive/iterators/mb_from_wchar.hpp> +#include <boost/archive/iterators/wchar_from_mb.hpp> +#endif +#include <boost/archive/iterators/xml_escape.hpp> +#include <boost/archive/iterators/xml_unescape.hpp> +#include <boost/archive/iterators/transform_width.hpp> +#include <boost/archive/iterators/istream_iterator.hpp> +#include <boost/archive/iterators/ostream_iterator.hpp> + +#include "test_tools.hpp" + +#ifndef BOOST_NO_CWCHAR + +void test_wchar_from_mb(const wchar_t *la, const char * a, const unsigned int size){ + typedef boost::archive::iterators::wchar_from_mb<const char *> translator; + BOOST_CHECK(( + std::equal( + translator(a), + translator(a + size), + la + ) + )); +} + +void test_mb_from_wchar(const char * a, const wchar_t *la, const unsigned int size){ + typedef boost::archive::iterators::mb_from_wchar<const wchar_t *> translator; + BOOST_CHECK( + std::equal( + translator(la), + translator(la + size), + a + ) + ); +} + +void test_roundtrip(const wchar_t * la){ + std::size_t s = std::wcslen(la); + std::vector<char> a; + { + typedef boost::archive::iterators::mb_from_wchar<const wchar_t *> translator; + std::copy( + translator(la), + translator(la + s), + std::back_inserter(a) + ); + // note: wchar_from_mb NEEDS a termination null in order to function! + a.push_back(static_cast<char>(0)); + } + BOOST_CHECK(a.size() > 0); + std::vector<wchar_t> la2; + { + typedef boost::archive::iterators::wchar_from_mb<std::vector<char>::const_iterator> translator; + std::copy( + translator(a.begin()), + translator(), + std::back_inserter(la2) + ); + } + BOOST_CHECK(la2.size() == s); + BOOST_CHECK(std::equal(la, la + s, la2.begin())); +} +#endif + +template<class CharType> +void test_xml_escape( + const CharType * xml_escaped, + const CharType * xml, + unsigned int size +){ + typedef boost::archive::iterators::xml_escape<const CharType *> translator; + + BOOST_CHECK( + std::equal( + translator(xml), + translator(xml + size), + xml_escaped + ) + ); +} + +template<class CharType> +void test_xml_unescape( + const CharType * xml, + const CharType * xml_escaped, + unsigned int size +){ + + // test xml_unescape + typedef boost::archive::iterators::xml_unescape<const CharType *> translator; + + BOOST_CHECK( + std::equal( + translator(xml_escaped), + translator(xml_escaped + size), + xml + ) + ); +} + +template<int BitsOut, int BitsIn> +void test_transform_width(unsigned int size){ + // test transform_width + char rawdata[8]; + + char * rptr; + for(rptr = rawdata + size; rptr-- > rawdata;) + *rptr = static_cast<char>(0xff & std::rand()); + + // convert 8 to 6 bit characters + typedef boost::archive::iterators::transform_width< + char *, BitsOut, BitsIn + > translator1; + + std::vector<char> vout; + + std::copy( + translator1(static_cast<char *>(rawdata)), + translator1(rawdata + size), + std::back_inserter(vout) + ); + + // check to see we got the expected # of characters out + if(0 == size) + BOOST_CHECK(vout.size() == 0); + else + BOOST_CHECK(vout.size() == (size * BitsIn - 1 ) / BitsOut + 1); + + typedef boost::archive::iterators::transform_width< + std::vector<char>::iterator, BitsIn, BitsOut + > translator2; + + std::vector<char> vin; + std::copy( + translator2(vout.begin()), + translator2(vout.end()), + std::back_inserter(vin) + ); + + // check to see we got the expected # of characters out + BOOST_CHECK(vin.size() == size); + + BOOST_CHECK( + std::equal( + rawdata, + rawdata + size, + vin.begin() + ) + ); +} + +template<class CharType> +void test_stream_iterators( + const CharType * test_data, + unsigned int size +){ + std::basic_stringstream<CharType> ss; + boost::archive::iterators::ostream_iterator<CharType> osi = + boost::archive::iterators::ostream_iterator<CharType>(ss); + std::copy(test_data, test_data + size, osi); + + BOOST_CHECK(size == ss.str().size()); + + boost::archive::iterators::istream_iterator<CharType> isi = + boost::archive::iterators::istream_iterator<CharType>(ss); + BOOST_CHECK(std::equal(test_data, test_data + size,isi)); +} + +int +test_main(int /* argc */, char* /* argv */ [] ) +{ + const char xml[] = "<+>+&+\"+'"; + const char xml_escaped[] = "<+>+&+"+'"; + test_xml_escape<const char>( + xml_escaped, + xml, + sizeof(xml) / sizeof(char) - 1 + ); + test_xml_unescape<const char>( + xml, + xml_escaped, + sizeof(xml_escaped) / sizeof(char) - 1 + ); + + + #ifndef BOOST_NO_CWCHAR + const wchar_t wxml[] = L"<+>+&+\"+'"; + const wchar_t wxml_escaped[] = L"<+>+&+"+'"; + test_xml_escape<const wchar_t>( + wxml_escaped, + wxml, + sizeof(wxml) / sizeof(wchar_t) - 1 + ); + test_xml_unescape<const wchar_t>( + wxml, + wxml_escaped, + sizeof(wxml_escaped) / sizeof(wchar_t) - 1 + ); + + const char b[] = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; + const wchar_t lb[] = L"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; + test_mb_from_wchar(b, lb, sizeof(lb) / sizeof(wchar_t) - 1); + test_wchar_from_mb(lb, b, sizeof(b) / sizeof(char) - 1); + + const char a[] = "abcdefghijklmnopqrstuvwxyz"; + const wchar_t la[] = L"abcdefghijklmnopqrstuvwxyz"; + test_mb_from_wchar(a, la, sizeof(la) / sizeof(wchar_t) - 1); + test_wchar_from_mb(la, a, sizeof(a) / sizeof(char) - 1); + + test_roundtrip(L"z\u00df\u6c34\U0001f34c"); + + test_stream_iterators<wchar_t>(la, sizeof(la)/sizeof(wchar_t) - 1); + #endif + + test_stream_iterators<char>(a, sizeof(a) - 1); + + test_transform_width<6, 8>(0); + test_transform_width<6, 8>(1); + test_transform_width<6, 8>(2); + test_transform_width<6, 8>(3); + test_transform_width<6, 8>(4); + test_transform_width<6, 8>(5); + test_transform_width<6, 8>(6); + test_transform_width<6, 8>(7); + test_transform_width<6, 8>(8); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_iterators_base64.cpp b/src/boost/libs/serialization/test/test_iterators_base64.cpp new file mode 100644 index 000000000..1f772c6d7 --- /dev/null +++ b/src/boost/libs/serialization/test/test_iterators_base64.cpp @@ -0,0 +1,105 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_iterators.cpp + +// (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) + +#include <algorithm> +#include <list> + +#if (defined _MSC_VER) && (_MSC_VER == 1200) +# pragma warning (disable : 4786) // too long name, harmless warning +#endif + +#include <cstdlib> +#include <cstddef> // size_t + +#include <boost/config.hpp> +#ifdef BOOST_NO_STDC_NAMESPACE +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include <boost/archive/iterators/binary_from_base64.hpp> +#include <boost/archive/iterators/base64_from_binary.hpp> +#include <boost/archive/iterators/insert_linebreaks.hpp> +#include <boost/archive/iterators/remove_whitespace.hpp> +#include <boost/archive/iterators/transform_width.hpp> + +#include "test_tools.hpp" + +#include <iostream> + +template<typename CharType> +void test_base64(unsigned int size){ + CharType rawdata[150]; + CharType * rptr; + for(rptr = rawdata + size; rptr-- > rawdata;) + *rptr = static_cast<CharType>(std::rand()& 0xff); + + // convert to base64 + typedef std::list<CharType> text_base64_type; + text_base64_type text_base64; + + typedef + boost::archive::iterators::insert_linebreaks< + boost::archive::iterators::base64_from_binary< + boost::archive::iterators::transform_width< + CharType * + ,6 + ,sizeof(CharType) * 8 + > + > + ,76 + > + translate_out; + + std::copy( + translate_out(static_cast<CharType *>(rawdata)), + translate_out(rawdata + size), + std::back_inserter(text_base64) + ); + + // convert from base64 to binary and compare with the original + typedef + boost::archive::iterators::transform_width< + boost::archive::iterators::binary_from_base64< + boost::archive::iterators::remove_whitespace< + typename text_base64_type::iterator + > + >, + sizeof(CharType) * 8, + 6 + > translate_in; + + BOOST_CHECK( + std::equal( + rawdata, + rawdata + size, + translate_in(text_base64.begin()) + ) + ); + +} + +int +test_main( int /*argc*/, char* /*argv*/[] ) +{ + test_base64<char>(1); + test_base64<char>(2); + test_base64<char>(3); + test_base64<char>(4); + test_base64<char>(150); + #ifndef BOOST_NO_CWCHAR + test_base64<wchar_t>(1); + test_base64<wchar_t>(2); + test_base64<wchar_t>(3); + test_base64<wchar_t>(4); + test_base64<wchar_t>(150); + #endif + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_list.cpp b/src/boost/libs/serialization/test/test_list.cpp new file mode 100644 index 000000000..c76757ef5 --- /dev/null +++ b/src/boost/libs/serialization/test/test_list.cpp @@ -0,0 +1,59 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +#include <boost/serialization/list.hpp> +void test_list(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::list<A> alist; + alist.push_back(A()); + alist.push_back(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("alist",alist); + } + + std::list<A> alist1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("alist",alist1); + } + BOOST_CHECK(alist == alist1); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_list(); + return EXIT_SUCCESS; +} + +// EOF + diff --git a/src/boost/libs/serialization/test/test_list_ptrs.cpp b/src/boost/libs/serialization/test/test_list_ptrs.cpp new file mode 100644 index 000000000..f5597fab8 --- /dev/null +++ b/src/boost/libs/serialization/test/test_list_ptrs.cpp @@ -0,0 +1,98 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/type_traits/is_pointer.hpp> +#include <boost/static_assert.hpp> +#include <boost/checked_delete.hpp> + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> + +#include "A.hpp" +#include "A.ipp" + +template<class T> +struct ptr_equal_to { + BOOST_STATIC_ASSERT(::boost::is_pointer< T >::value); + bool operator()(T const _Left, T const _Right) const + { + if(NULL == _Left && NULL == _Right) + return true; + if(typeid(*_Left) != typeid(*_Right)) + return false; + return *_Left == *_Right; + } +}; + +#include <boost/serialization/list.hpp> +void test_list(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::list<A *> alist; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + A * free_a_ptr = new A; + alist.push_back(free_a_ptr); + alist.push_back(new A); + // verify that first element is the same as the free pointer + BOOST_CHECK((*alist.begin()) == free_a_ptr); + oa << boost::serialization::make_nvp("alist", alist); + oa << boost::serialization::make_nvp("free_a_ptr", free_a_ptr); + } + std::list<A *> alist1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + A * free_a_ptr1; + ia >> boost::serialization::make_nvp("alist", alist1); + ia >> boost::serialization::make_nvp("free_a_ptr", free_a_ptr1); + BOOST_CHECK( + alist.size() == alist1.size() + && std::equal(alist.begin(),alist.end(),alist1.begin(),ptr_equal_to<A *>()) + ); + // verify that first element is the same as the free pointer + BOOST_CHECK((*alist1.begin()) == free_a_ptr1); + } + + std::for_each( + alist.begin(), + alist.end(), + boost::checked_deleter<A>() + ); + std::for_each( + alist1.begin(), + alist1.end(), + boost::checked_deleter<A>() + ); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_list(); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_map.cpp b/src/boost/libs/serialization/test/test_map.cpp new file mode 100644 index 000000000..21e3f51ac --- /dev/null +++ b/src/boost/libs/serialization/test/test_map.cpp @@ -0,0 +1,149 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_map.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <algorithm> // std::copy +#include <vector> +#include <fstream> +#include <cstddef> // size_t, NULL + +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> + +#include <cstdio> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/map.hpp> + +#include "A.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// a key value initialized with a random value for use +// in testing STL map serialization +struct random_key { + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive & ar, + const unsigned int /* file_version */ + ){ + ar & boost::serialization::make_nvp("random_key", m_i); + } + int m_i; + random_key() : m_i(std::rand()){}; + bool operator<(const random_key &rhs) const { + return m_i < rhs.m_i; + } + bool operator==(const random_key &rhs) const { + return m_i == rhs.m_i; + } + operator std::size_t () const { // required by hash_map + return m_i; + } +}; + +void +test_map(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_MESSAGE("map"); + // test map of objects + std::map<random_key, A> amap; + amap.insert(std::make_pair(random_key(), A())); + amap.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("amap", amap); + } + std::map<random_key, A> amap1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("amap", amap1); + } + BOOST_CHECK(amap == amap1); + std::remove(testfile); +} + +void +test_map_2(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_MESSAGE("map_2"); + std::pair<int, int> a(11, 22); + std::map<int, int> b; + b[0] = 0; + b[-1] = -1; + b[1] = 1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + std::pair<int, int> * const pa = &a; + std::map<int, int> * const pb = &b; + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(pb); + oa << BOOST_SERIALIZATION_NVP(pa); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + std::pair<int, int> *pa = 0; + std::map<int, int> *pb = 0; + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(pb); + ia >> BOOST_SERIALIZATION_NVP(pa); + delete pa; + delete pb; + } + std::remove(testfile); +} + +void +test_multimap(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_MESSAGE("multimap"); + std::multimap<random_key, A> amultimap; + amultimap.insert(std::make_pair(random_key(), A())); + amultimap.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("amultimap", amultimap); + } + std::multimap<random_key, A> amultimap1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("amultimap", amultimap1); + } + BOOST_CHECK(amultimap == amultimap1); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_map(); + test_map_2(); + test_multimap(); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_map_boost_unordered.cpp b/src/boost/libs/serialization/test/test_map_boost_unordered.cpp new file mode 100644 index 000000000..300ae4db1 --- /dev/null +++ b/src/boost/libs/serialization/test/test_map_boost_unordered.cpp @@ -0,0 +1,142 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_map.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <algorithm> // std::copy +#include <vector> +#include <fstream> +#include <cstddef> // size_t, NULL + +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> + +#include <cstdio> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/map.hpp> + +#include "A.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// a key value initialized with a random value for use +// in testing STL map serialization +struct random_key { + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive & ar, + const unsigned int /* file_version */ + ){ + ar & boost::serialization::make_nvp("random_key", m_i); + } + int m_i; + random_key() : m_i(std::rand()){}; + bool operator<(const random_key &rhs) const { + return m_i < rhs.m_i; + } + bool operator==(const random_key &rhs) const { + return m_i == rhs.m_i; + } + operator std::size_t () const { // required by hash_map + return m_i; + } +}; + +#include <boost/serialization/boost_unordered_map.hpp> +#include <functional> // requires changeset [69520]; Ticket #5254 + +namespace boost { + template<> + struct hash<random_key>{ + std::size_t operator()(const random_key& r) const { + return static_cast<std::size_t>(r); + } + }; +} // namespace std + +void +test_unordered_map(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("unordered_map"); + // test unordered_map of objects + boost::unordered_map<random_key, A> anunordered_map; + anunordered_map.insert(std::make_pair(random_key(), A())); + anunordered_map.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunorderedmap",anunordered_map); + } + boost::unordered_map<random_key, A> anunordered_map1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunorderedmap",anunordered_map1); + } + + std::vector< std::pair<random_key, A> > tvec, tvec1; + std::copy(anunordered_map.begin(), anunordered_map.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_map1.begin(), anunordered_map1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} + +void +test_unordered_multimap(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("unordered_multimap"); + boost::unordered_multimap<random_key, A> anunordered_multimap; + anunordered_multimap.insert(std::make_pair(random_key(), A())); + anunordered_multimap.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_multimap", anunordered_multimap); + } + boost::unordered_multimap<random_key, A> anunordered_multimap1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_multimap", anunordered_multimap1); + } + std::vector< std::pair<random_key, A> > tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_multimap.begin(), anunordered_multimap.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_multimap1.begin(), anunordered_multimap1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_unordered_map(); + test_unordered_multimap(); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_map_hashed.cpp b/src/boost/libs/serialization/test/test_map_hashed.cpp new file mode 100644 index 000000000..8b009cd28 --- /dev/null +++ b/src/boost/libs/serialization/test/test_map_hashed.cpp @@ -0,0 +1,139 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_map.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <algorithm> // std::copy +#include <vector> +#include <fstream> +#include <cstddef> // size_t, NULL + +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> + +#include <cstdio> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/map.hpp> + +#include "A.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// a key value initialized with a random value for use +// in testing STL map serialization +struct random_key { + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive & ar, + const unsigned int /* file_version */ + ){ + ar & boost::serialization::make_nvp("random_key", m_i); + } + int m_i; + random_key() : m_i(std::rand()){}; + bool operator<(const random_key &rhs) const { + return m_i < rhs.m_i; + } + bool operator==(const random_key &rhs) const { + return m_i == rhs.m_i; + } + operator std::size_t () const { // required by hash_map + return m_i; + } +}; + +#include <boost/serialization/hash_map.hpp> + +namespace BOOST_STD_EXTENSION_NAMESPACE { + template<> + struct hash<random_key>{ + std::size_t operator()(const random_key& r) const { + return static_cast<std::size_t>(r); + } + }; +} // namespace BOOST_STD_EXTENSION_NAMESPACE + +void +test_hash_map(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("hash_map"); + // test hash_map of objects + BOOST_STD_EXTENSION_NAMESPACE::hash_map<random_key, A> ahash_map; + ahash_map.insert(std::make_pair(random_key(), A())); + ahash_map.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ahashmap",ahash_map); + } + BOOST_STD_EXTENSION_NAMESPACE::hash_map<random_key, A> ahash_map1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ahashmap",ahash_map1); + } + + std::vector< std::pair<random_key, A> > tvec, tvec1; + std::copy(ahash_map.begin(), ahash_map.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(ahash_map1.begin(), ahash_map1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} + +void +test_hash_multimap(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("hash_multimap"); + BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<random_key, A> ahash_multimap; + ahash_multimap.insert(std::make_pair(random_key(), A())); + ahash_multimap.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ahash_multimap", ahash_multimap); + } + BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<random_key, A> ahash_multimap1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ahash_multimap", ahash_multimap1); + } + std::vector< std::pair<random_key, A> > tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(ahash_multimap.begin(), ahash_multimap.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(ahash_multimap1.begin(), ahash_multimap1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_hash_map(); + test_hash_multimap(); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_map_unordered.cpp b/src/boost/libs/serialization/test/test_map_unordered.cpp new file mode 100644 index 000000000..631f1f225 --- /dev/null +++ b/src/boost/libs/serialization/test/test_map_unordered.cpp @@ -0,0 +1,142 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_map.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <algorithm> // std::copy +#include <vector> +#include <fstream> +#include <cstddef> // size_t, NULL + +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> + +#include <cstdio> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/map.hpp> + +#include "A.hpp" +#include "A.ipp" + +/////////////////////////////////////////////////////// +// a key value initialized with a random value for use +// in testing STL map serialization +struct random_key { + friend class boost::serialization::access; + template<class Archive> + void serialize( + Archive & ar, + const unsigned int /* file_version */ + ){ + ar & boost::serialization::make_nvp("random_key", m_i); + } + int m_i; + random_key() : m_i(std::rand()){}; + bool operator<(const random_key &rhs) const { + return m_i < rhs.m_i; + } + bool operator==(const random_key &rhs) const { + return m_i == rhs.m_i; + } + operator std::size_t () const { // required by hash_map + return m_i; + } +}; + +#include <boost/serialization/unordered_map.hpp> +#include <functional> // requires changeset [69520]; Ticket #5254 + +namespace std { + template<> + struct hash<random_key>{ + std::size_t operator()(const random_key& r) const { + return static_cast<std::size_t>(r); + } + }; +} // namespace std + +void +test_unordered_map(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("unordered_map"); + // test unordered_map of objects + std::unordered_map<random_key, A> anunordered_map; + anunordered_map.insert(std::make_pair(random_key(), A())); + anunordered_map.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunorderedmap",anunordered_map); + } + std::unordered_map<random_key, A> anunordered_map1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunorderedmap",anunordered_map1); + } + + std::vector< std::pair<random_key, A> > tvec, tvec1; + std::copy(anunordered_map.begin(), anunordered_map.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_map1.begin(), anunordered_map1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} + +void +test_unordered_multimap(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_CHECKPOINT("unordered_multimap"); + std::unordered_multimap<random_key, A> anunordered_multimap; + anunordered_multimap.insert(std::make_pair(random_key(), A())); + anunordered_multimap.insert(std::make_pair(random_key(), A())); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_multimap", anunordered_multimap); + } + std::unordered_multimap<random_key, A> anunordered_multimap1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_multimap", anunordered_multimap1); + } + std::vector< std::pair<random_key, A> > tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_multimap.begin(), anunordered_multimap.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_multimap1.begin(), anunordered_multimap1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_unordered_map(); + test_unordered_multimap(); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_mi.cpp b/src/boost/libs/serialization/test/test_mi.cpp new file mode 100644 index 000000000..cf9df90c3 --- /dev/null +++ b/src/boost/libs/serialization/test/test_mi.cpp @@ -0,0 +1,135 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_mi.cpp + +// (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) + +// test of serialization of base classes with multiple inheritance +// contributed by Peter Dimov + +#include <cstddef> +#include <iostream> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/base_object.hpp> + +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: + explicit A(int x = 0): x(x) {} + virtual ~A(); // = 0; + int get_x() const + { + return x; + } +}; + +inline A::~A() +{ +} + +class B +{ +private: + int y; + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(y); + } +public: + explicit B(int y = 0): y(y) {} + virtual ~B(){} + int get_y() const + { + return y; + } +}; + +class C: public A, public B +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(B); + } +public: + C(){} + C(int x, int y): A(x), B(y){} +}; + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + C * pc = new C(1, 2); + A * pa = pc; + B * pb = pc; + + BOOST_CHECK(pa == pc); + BOOST_CHECK(pb == pc); + + int x = pa->get_x(); + int y = pb->get_y(); + + std::cout << "pa->get_x(): " << pa->get_x() << std::endl; + std::cout << "pb->get_y(): " << pb->get_y() << std::endl; + + { + test_ostream ofs(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(ofs); + oa << BOOST_SERIALIZATION_NVP(pc); + oa << BOOST_SERIALIZATION_NVP(pa); + oa << BOOST_SERIALIZATION_NVP(pb); + } + + delete pc; + pc = NULL; + pa = NULL; + pb = NULL; + + { + test_istream ifs(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(ifs); + ia >> BOOST_SERIALIZATION_NVP(pc); + ia >> BOOST_SERIALIZATION_NVP(pa); + ia >> BOOST_SERIALIZATION_NVP(pb); + } + + BOOST_CHECK(pa == pc); + BOOST_CHECK(pb == pc); + + BOOST_CHECK(x == pa->get_x()); + BOOST_CHECK(y == pb->get_y()); + + std::cout << "pa->get_x(): " << pa->get_x() << std::endl; + std::cout << "pb->get_y(): " << pb->get_y() << std::endl; + + delete pc; + std::remove(testfile); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_mult_archive_types.cpp b/src/boost/libs/serialization/test/test_mult_archive_types.cpp new file mode 100644 index 000000000..b211489af --- /dev/null +++ b/src/boost/libs/serialization/test/test_mult_archive_types.cpp @@ -0,0 +1,124 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_mult_archive_types.cpp + +// (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) + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/xml_oarchive.hpp> +#include <boost/archive/xml_iarchive.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/export.hpp> +#include <boost/serialization/nvp.hpp> + +// This is a simple class. It contains a counter of the number +// of objects of this class which have been instantiated. +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: + static int count; + A(){++count;} // default constructor + virtual ~A(){--count;} // default destructor +}; + +BOOST_CLASS_EXPORT(A) + +// B is a subclass of A +class B : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } +public: + static int count; + B() : A() {}; + virtual ~B() {}; +}; + +BOOST_CLASS_EXPORT(B) + +int A::count = 0; + +// Run tests by serializing two shared_ptrs into an archive of type +// OARCH, clearing them (deleting the objects) and then reloading the +// objects back from an archive of type OARCH. +template<class OA, class IA> +void test_save_and_load(A * first, A * second) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // Save + { + std::ofstream os(testfile); + OA oa(os); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); + } + + // Clear the pointers, thereby destroying the objects they contain + first = NULL; + second = NULL; + + // Load + { + std::ifstream is(testfile); + IA ia(is); + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); + } + BOOST_CHECK(first == second); + std::remove(testfile); +} + +using namespace boost::archive; + +// This does the tests +int test_main(int /* argc */, char * /* argv */[]) +{ + // Try to save and load pointers to As, to a text archive + A * a = new A; + A * a1 = a; + test_save_and_load<text_oarchive, text_iarchive>(a, a1); + + // Try to save and load pointers to Bs, to a text archive + B * b = new B; + B * b1 = b; + test_save_and_load<text_oarchive, text_iarchive>(b, b1); + + // Try to save and load pointers to As, to an xml archive + test_save_and_load<xml_oarchive, xml_iarchive>(a, a1); + + // Try to save and load pointers to Bs, to an xml archive + test_save_and_load<xml_oarchive, xml_iarchive>(b, b1); + + delete a; + delete b; + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_multi_shared_lib.cpp b/src/boost/libs/serialization/test/test_multi_shared_lib.cpp new file mode 100644 index 000000000..978e95916 --- /dev/null +++ b/src/boost/libs/serialization/test/test_multi_shared_lib.cpp @@ -0,0 +1,30 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_multi_shared_lib.cpp: test that implementation of extented_type_info +// works when using multiple shared libraries +// +// This reproduces a crash that occurred when multiple shared libraries were +// using Boost.Serialization built statically. That causes core singletons to be +// instantiated in each shared library separately. Due to some destruction order +// mixup in the context of shared libraries on linux it is possible, that +// singletons accessed in destructors of other singletons are already destructed. +// Accessing them will then lead to a crash or memory corruption. +// For this we need 2 shared libraries, linked against static boost. They need to +// instantiate extended_type_info_typeid with different types, either by serializing +// 2 types (which will do that internally) or by accessing the singletons directly. + +// (C) Copyright 2018 Alexander Grund +// 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 <boost/serialization/config.hpp> + +// Both shall instantiate different(!) singletons and return true +BOOST_SYMBOL_IMPORT bool f(); +BOOST_SYMBOL_IMPORT bool g(); + +int main(int argc, char**){ + if(f() && g()) + return 0; + return 1; +} diff --git a/src/boost/libs/serialization/test/test_multiple_inheritance.cpp b/src/boost/libs/serialization/test/test_multiple_inheritance.cpp new file mode 100644 index 000000000..08c304f83 --- /dev/null +++ b/src/boost/libs/serialization/test/test_multiple_inheritance.cpp @@ -0,0 +1,125 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_multiple_inheritance.cpp + +// (C) Copyright 2009 Robert Ramey. +// 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) + +// test of serialization library for multiple inheritence situations + +#include <cassert> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> + +struct Base1 { + int m_x; + Base1(){} + Base1(int x) : m_x(1 + x) {} + virtual ~Base1() {} + bool operator==(Base1 & rhs) const { + return m_x == rhs.m_x; + } + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */) { + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +//BOOST_CLASS_EXPORT(Base1) + +struct Base2 { + int m_x; + Base2(){} + Base2(int x) : m_x(2 + x) {} + virtual ~Base2() {} + bool operator==(Base2 & rhs) const { + return m_x == rhs.m_x; + } + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */) { + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +//BOOST_CLASS_EXPORT(Base2) + +struct Sub : + public Base1, + public Base2 +{ + int m_x; + Sub(){} + Sub(int x) : + Base1(x), + Base2(x), + m_x(x) + {} + bool operator==(Sub & rhs) const { + if(! Base2::operator==(rhs)) + return false; + if(! Base1::operator==(rhs)) + return false; + return m_x == rhs.m_x; + } + virtual ~Sub() {} + + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base1); + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base2); + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +BOOST_CLASS_EXPORT(Sub) + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + Base2 * pb2; + { + // serialize + pb2 = new Sub(2); + + test_ostream ofs(testfile); + test_oarchive oa(ofs); + oa << boost::serialization::make_nvp("Base2", pb2); + } + Base2 * pb2_1; + { + // de-serialize + test_istream ifs(testfile); + test_iarchive ia(ifs); + ia >> boost::serialization::make_nvp("Base2", pb2_1); + } + Sub *s1 = dynamic_cast<Sub *>(pb2); + BOOST_CHECK(0 != s1); + Sub *s2 = dynamic_cast<Sub *>(pb2_1); + BOOST_CHECK(0 != s2); + BOOST_CHECK(*s1 == *s2); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_multiple_ptrs.cpp b/src/boost/libs/serialization/test/test_multiple_ptrs.cpp new file mode 100644 index 000000000..b1da84227 --- /dev/null +++ b/src/boost/libs/serialization/test/test_multiple_ptrs.cpp @@ -0,0 +1,50 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_archive_derivation.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "D.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const A a; + A a1; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK(a == a1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_native_array.cpp b/src/boost/libs/serialization/test/test_native_array.cpp new file mode 100644 index 000000000..a08cdcc0e --- /dev/null +++ b/src/boost/libs/serialization/test/test_native_array.cpp @@ -0,0 +1,103 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_array.cpp + +// (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) + +// should pass compilation and execution + +#include <stdlib.h> + +#include <boost/config.hpp> +#include <cstddef> +#include <fstream> +#include <algorithm> // equal +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif +#include "test_tools.hpp" +#include <boost/core/no_exceptions_support.hpp> +#include <boost/archive/archive_exception.hpp> + +#include "A.hpp" +#include "A.ipp" + +template <class T> +int test_native_array(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + const T a_array[10]={T(),T(),T(),T(),T(),T(),T(),T(),T(),T()}; + const T b_array[2][3]={{T(),T(),T()},{T(),T(),T()}}; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + { + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a_array", a_array); + oa << boost::serialization::make_nvp("b_array", b_array); + } + os.close(); + } + { + T a_array1[10]; + T b_array1[2][3]; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a_array", a_array1); + ia >> boost::serialization::make_nvp("b_array", b_array1); + } + is.close(); + BOOST_CHECK(std::equal(& a_array[0], & a_array[10], & a_array1[0])); + BOOST_CHECK(b_array[0][0] == b_array1[0][0]); + BOOST_CHECK(b_array[1][0] == b_array1[1][0]); + } + { + T a_array1[9]; + T b_array1[2][3]; + test_istream is(testfile, TEST_STREAM_FLAGS); + { + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + ia >> boost::serialization::make_nvp("a_array", a_array1); + ia >> boost::serialization::make_nvp("b_array", b_array1); + } + BOOST_CATCH (boost::archive::archive_exception const& ae){ + BOOST_CHECK( + boost::archive::archive_exception::array_size_too_short + == ae.code + ); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + is.close(); + } + std::remove(testfile); + return EXIT_SUCCESS; +} + +int test_main( int /* argc */, char* /* argv */[] ){ + int res; + + // native array + res = test_native_array<A>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + // test an int array for which optimized versions should be available + res = test_native_array<int>(); + if (res != EXIT_SUCCESS) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_new_operator.cpp b/src/boost/libs/serialization/test/test_new_operator.cpp new file mode 100644 index 000000000..c7b1e7e62 --- /dev/null +++ b/src/boost/libs/serialization/test/test_new_operator.cpp @@ -0,0 +1,154 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_new_operator.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> +#include <new> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/access.hpp> + +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +class ANew : public A { + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned /*file_version*/){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } +public: + static unsigned int m_new_calls; + static unsigned int m_delete_calls; + // implement class specific new/delete in terms standard + // implementation - we're testing serialization + // not "new" here. + static void * operator new(size_t s){ + ++m_new_calls; + return ::operator new(s); + } + static void operator delete(void *p, std::size_t){ + ++m_delete_calls; + ::operator delete(p); + } +}; +unsigned int ANew::m_new_calls = 0; +unsigned int ANew::m_delete_calls = 0; + +class ANew1 : public A { + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned /*file_version*/){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } +public: + static unsigned int m_new_calls; + static unsigned int m_delete_calls; + // implement class specific new/delete in terms standard + // implementation - we're testing serialization + // not "new" here. + static void * operator new(size_t s){ + ++m_new_calls; + return ::operator new(s); + } + static void operator delete(void *p){ + ++m_delete_calls; + ::operator delete(p); + } +}; +unsigned int ANew1::m_new_calls = 0; +unsigned int ANew1::m_delete_calls = 0; + + +class ANew2 : public A { + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned /*file_version*/){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } +public: + static unsigned int m_new_calls; + static unsigned int m_delete_calls; + // implement class specific new/delete in terms standard + // implementation - we're testing serialization + // not "new" here. + static void * operator new(size_t s){ + ++m_new_calls; + return ::operator new(s); + } +}; +unsigned int ANew2::m_new_calls = 0; +unsigned int ANew2::m_delete_calls = 0; + +template<typename T> +int test(){ + const char * testfile = boost::archive::tmpnam(NULL); + + BOOST_REQUIRE(NULL != testfile); + + + T *ta = new T(); + + BOOST_CHECK(1 == T::m_new_calls); + BOOST_CHECK(0 == T::m_delete_calls); + + T *ta1 = NULL; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ta", ta); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ta", ta1); + } + BOOST_CHECK(ta != ta1); + BOOST_CHECK(*ta == *ta1); + + BOOST_CHECK(2 == T::m_new_calls); + BOOST_CHECK(0 == T::m_delete_calls); + + std::remove(testfile); + + delete ta; + delete ta1; + + BOOST_CHECK(2 == T::m_new_calls); + BOOST_CHECK(2 == T::m_delete_calls); + + return EXIT_SUCCESS; +} +int test_main( int /* argc */, char* /* argv */[] ){ + if(EXIT_SUCCESS != test<ANew>()) + return EXIT_FAILURE; + if(EXIT_SUCCESS != test<ANew1>()) + return EXIT_FAILURE; + // Note the following test fails. To see why this is, look into the file + // iserializer line # 247. Feel free to send a patch to detect the absense + // of a class specific delete. + /* + if(EXIT_SUCCESS != test<ANew2>()) + return EXIT_FAILURE; + */ + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_no_rtti.cpp b/src/boost/libs/serialization/test/test_no_rtti.cpp new file mode 100644 index 000000000..38ccd2dc0 --- /dev/null +++ b/src/boost/libs/serialization/test/test_no_rtti.cpp @@ -0,0 +1,166 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_no_rtti.cpp + +// (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) + +// note: this program tests the inter-operability of different +// extended typeinfo systems. In this example, one class is +// identified using the default RTTI while the other uses a custom +// system based on the export key. +// +// As this program uses RTTI for one of the types, the test will fail +// on a system for which RTTI is not enabled or not existent. + +#include <cstddef> +#include <fstream> +#include <iostream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/nvp.hpp> + +#include "test_tools.hpp" + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include "polymorphic_base.hpp" + +#include "polymorphic_derived1.hpp" + +#include "polymorphic_derived2.hpp" + +// save derived polymorphic class +void save_derived(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + + polymorphic_derived1 *rd1 = new polymorphic_derived1; + polymorphic_derived2 *rd2 = new polymorphic_derived2; + + std::cout << "saving polymorphic_derived1 (no_rtti)\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rd1); + + std::cout << "saving polymorphic_derived2\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rd2); + + const polymorphic_base *rb1 = rd1; + polymorphic_base *rb2 = rd2; + std::cout << "saving polymorphic_derived1 (no_rtti) through base (rtti)\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rb1); + std::cout << "saving polymorphic_derived2 through base\n"; + oa_interface << BOOST_SERIALIZATION_NVP(rb2); + + delete rd1; + delete rd2; +} + +void load_derived(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + + polymorphic_derived1 *rd1 = NULL; + polymorphic_derived2 *rd2 = NULL; + + std::cout << "loading polymorphic_derived1 (no_rtti)\n"; + ia_interface >> BOOST_SERIALIZATION_NVP(rd1); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance().get_derived_extended_type_info(*rd1) + , + "restored pointer d1 not of correct type" + ); + + std::cout << "loading polymorphic_derived2\n"; + ia_interface >> BOOST_SERIALIZATION_NVP(rd2); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived2 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_derived2 + >::type::get_const_instance().get_derived_extended_type_info(*rd2) + , + "restored pointer d2 not of correct type" + ); + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // the above opereration registers the derived classes as a side + // effect. Hence, instances can now be correctly serialized through + // a base class pointer. + std::cout << "loading polymorphic_derived1 (no_rtti) through base (no_rtti)\n"; + ia_interface >> BOOST_SERIALIZATION_NVP(rb1); + + BOOST_CHECK_MESSAGE( + rb1 == dynamic_cast<polymorphic_base *>(rd1), + "serialized pointers not correctly restored" + ); + + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_base + >::type::get_const_instance().get_derived_extended_type_info(*rb1) + , + "restored pointer b1 not of correct type" + ); + std::cout << "loading polymorphic_derived2 through base (no_rtti)\n"; + ia_interface >> BOOST_SERIALIZATION_NVP(rb2); + + BOOST_CHECK_MESSAGE( + rb2 == dynamic_cast<polymorphic_base *>(rd2), + "serialized pointers not correctly restored" + ); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived2 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_base + >::type::get_const_instance().get_derived_extended_type_info(*rb2) + , + "restored pointer b2 not of correct type" + ); + delete rb1; + delete rb2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save_derived(testfile); + load_derived(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_non_default_ctor.cpp b/src/boost/libs/serialization/test/test_non_default_ctor.cpp new file mode 100644 index 000000000..33780ce80 --- /dev/null +++ b/src/boost/libs/serialization/test/test_non_default_ctor.cpp @@ -0,0 +1,198 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_non_default_ctor.cpp + +// (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) + +// should pass compilation and execution + +// this tests: +// a) non-intrusive method of implementing serialization +// b) usage of a non-default constructor + +#include <cstddef> // NULL +#include <cstdio> // remove() +#include <fstream> +#include <cstdlib> // for rand() +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> +#include <boost/limits.hpp> +#include <boost/math/special_functions/next.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::remove; + #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE) + using ::numeric_limits; + #endif +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +/////////////////////////////////////////////////////// +// simple class test - using non-intrusive syntax +// illustrates the usage of the non-intrusve syntax +class A +{ + friend class boost::serialization::access; + + // note const values can only be initialized with a non + // non-default constructor + const int i; + + signed char s; + unsigned char t; + signed int u; + unsigned int v; + float w; + double x; + bool operator==(const A & rhs) const; + bool operator<(const A & rhs) const; + + template<class Archive> + void serialize(Archive & ar,const unsigned int /* file_version */){ + 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); + } + A(const A & rhs); + A & operator=(const A & rhs); +public: + static int count; + const int & get_i() const { + return i; + } + A(int i_); + ~A(); +}; + +int A::count = 0; + +A::A(int i_) : + i(i_), + s(static_cast<signed char>(0xff & std::rand())), + t(static_cast<signed char>(0xff & std::rand())), + u(std::rand()), + v(std::rand()), + w((float)std::rand() / std::rand()), + x((double)std::rand() / std::rand()) +{ + ++count; +} + +A::~A(){ + --count; +} + +bool A::operator==(const A &rhs) const +{ + return + s == rhs.s + && t == rhs.t + && u == rhs.u + && v == rhs.v + && std::abs( boost::math::float_distance(w, rhs.w)) < 2 + && std::abs( boost::math::float_distance(x, rhs.x)) < 2 + ; +} + +bool A::operator<(const A &rhs) const +{ + if(! (s == rhs.s) ) + return s < rhs.s; + if(! (t == rhs.t) ) + return t < rhs.t; + if(! (u == rhs.u) ) + return t < rhs.u; + if(! (v == rhs.v) ) + return t < rhs.v; + if(std::abs( boost::math::float_distance(w, rhs.w)) > 1) + return false; + if(std::abs( boost::math::float_distance(x, rhs.x)) > 1) + return false; + return false; +} + +namespace boost { +namespace serialization { + +template<class Archive> +inline void save_construct_data( + Archive & ar, + const A * a, + const unsigned int /* file_version */ +){ + // variable used for construction + ar << boost::serialization::make_nvp("i", a->get_i()); +} + +template<class Archive> +inline void load_construct_data( + Archive & ar, + A * a, + const unsigned int /* file_version */ +){ + int i; + ar >> boost::serialization::make_nvp("i", i); + ::new(a)A(i); +} + +} // serialization +} // namespace boost + +void save(const char * testfile){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + A a(2); + + oa << BOOST_SERIALIZATION_NVP(a); + + // save a copy pointer to this item + A *pa1 = &a; + oa << BOOST_SERIALIZATION_NVP(pa1); + + // save pointer to a new object + A *pa2 = new A(4); + oa << BOOST_SERIALIZATION_NVP(pa2); + + delete pa2; +} +void load(const char * testfile){ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + A a(4); + ia >> BOOST_SERIALIZATION_NVP(a); + + A *pa1; + ia >> BOOST_SERIALIZATION_NVP(pa1); + BOOST_CHECK_MESSAGE(pa1 == &a, "Copy of pointer not correctly restored"); + + A *pa2; + ia >> BOOST_SERIALIZATION_NVP(pa2); + BOOST_CHECK_MESSAGE(pa2 != &a, "Pointer not correctly restored"); + + delete pa2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save(testfile); + load(testfile); + BOOST_CHECK(0 == A::count); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_non_default_ctor2.cpp b/src/boost/libs/serialization/test/test_non_default_ctor2.cpp new file mode 100644 index 000000000..ef855f3af --- /dev/null +++ b/src/boost/libs/serialization/test/test_non_default_ctor2.cpp @@ -0,0 +1,144 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_non_default_ctor2.cpp + +// (C) Copyright 2002 Martin Ecker. +// 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) + +// should pass compilation and execution + +// this tests complex usage of non-default constructor. Specifically +// the case where a constructor serializes a pointer member. + +#include <fstream> + +#include <boost/config.hpp> + +#include "test_tools.hpp" + +class IntValueHolder +{ +public: + IntValueHolder() + : value(0) + {} + + IntValueHolder(int newvalue) + : value(newvalue) + {} + + int GetValue() const { return value; } + +private: + int value; + + friend class boost::serialization::access; + + template <class ArchiveT> + void serialize(ArchiveT& ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(value); + } +}; + +class FloatValueHolder +{ +public: + FloatValueHolder() + : value(0) + {} + + FloatValueHolder(float newvalue) + : value(newvalue) + {} + + float GetValue() const { return value; } + +private: + float value; + + friend class boost::serialization::access; + + template <class ArchiveT> + void serialize(ArchiveT& ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(value); + } +}; + +class A +{ +public: + A(const IntValueHolder& initialValue) + : value(initialValue), floatValue(new FloatValueHolder(10.0f)) + {} + + ~A() + { + delete floatValue; + } + + IntValueHolder value; + FloatValueHolder* floatValue; + +private: + friend class boost::serialization::access; + + template <class ArchiveT> + void serialize(ArchiveT& ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(floatValue); + } +}; + +namespace boost { +namespace serialization { + +template <class ArchiveT> +void save_construct_data( + ArchiveT& archive, + const A* p, + const unsigned int /*version*/ +){ + archive & boost::serialization::make_nvp("initialValue", p->value); +} + +template <class ArchiveT> +void load_construct_data( + ArchiveT& archive, + A* p, + const unsigned int /*version*/ +){ + IntValueHolder initialValue; + archive & boost::serialization::make_nvp("initialValue", initialValue); + + ::new (p) A(initialValue); +} + +} // serialization +} // namespace boost + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + A* a = new A(5); + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(a); + } + + A* a_new; + + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a_new); + } + delete a; + delete a_new; + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_non_intrusive.cpp b/src/boost/libs/serialization/test/test_non_intrusive.cpp new file mode 100644 index 000000000..b3c3536c9 --- /dev/null +++ b/src/boost/libs/serialization/test/test_non_intrusive.cpp @@ -0,0 +1,174 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_non_intrursive.cpp + +// (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) + +// should pass compilation and execution + +// this tests: +// a) non-intrusive method of implementing serialization +// b) usage of a non-default constructor + +#include <fstream> +#include <cstdlib> // for rand() +#include <cstdio> // remove +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> +#include <boost/limits.hpp> +#include <boost/math/special_functions/next.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::remove; + #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE) + using ::numeric_limits; + #endif +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +/////////////////////////////////////////////////////// +// simple class test - using non-intrusive syntax +// illustrates the usage of the non-intrusve syntax +class A +{ +public: + signed char s; + unsigned char t; + signed int u; + unsigned int v; + float w; + double x; + A(); + bool operator==(const A & rhs) const; + bool operator<(const A & rhs) const; +}; + +A::A() : + s(static_cast<signed char>(0xff & std::rand())), + t(static_cast<signed char>(0xff & std::rand())), + u(std::rand()), + v(std::rand()), + w((float)std::rand() / std::rand()), + x((double)std::rand() / std::rand()) +{ +} + +bool A::operator==(const A &rhs) const +{ + return + s == rhs.s + && t == rhs.t + && u == rhs.u + && v == rhs.v + && std::abs( boost::math::float_distance(w, rhs.w)) < 2 + && std::abs( boost::math::float_distance(x, rhs.x)) < 2 + ; +} + +bool A::operator<(const A &rhs) const +{ + if(! (s == rhs.s) ) + return s < rhs.s; + if(! (t == rhs.t) ) + return t < rhs.t; + if(! (u == rhs.u) ) + return t < rhs.u; + if(! (v == rhs.v) ) + return t < rhs.v; + if(std::abs( boost::math::float_distance(w, rhs.w)) > 1) + return false; + if(std::abs( boost::math::float_distance(x, rhs.x)) > 1) + return false; + return false; +} + +// note the following: + +// function specializations must be defined in the appropriate +// namespace - boost::serialization +namespace boost { +namespace serialization { + +// This first set of overrides should work with all compilers. + +// The last argument is int while the default versions +// defined in serialization.hpp have long as the last argument. +// This is part of the work around for compilers that don't +// support correct function template ordering. These functions +// are always called with 0 (i.e. an int) as the last argument. +// Our specialized versions also have int as the last argument +// while the default versions have a long as the last argument. +// This makes our specialized versions a better match than the +// default ones as no argument conversion is required to make a match +template<class Archive> +void serialize( + Archive & ar, + A & a, + const unsigned int /* file_version */ +){ + ar & boost::serialization::make_nvp("s", a.s); + ar & boost::serialization::make_nvp("t", a.t); + ar & boost::serialization::make_nvp("u", a.u); + ar & boost::serialization::make_nvp("v", a.v); + ar & boost::serialization::make_nvp("w", a.w); + ar & boost::serialization::make_nvp("x", a.x); +} + +} // serialization +} // namespace boost + +void save(const char * testfile){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + A a; + + oa << BOOST_SERIALIZATION_NVP(a); + + // save a copy pointer to this item + A *pa1 = &a; + oa << BOOST_SERIALIZATION_NVP(pa1); + + // save pointer to a new object + A *pa2 = new A(); + oa << BOOST_SERIALIZATION_NVP(pa2); + + delete pa2; +} + +void load(const char * testfile){ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + A a; + ia >> BOOST_SERIALIZATION_NVP(a); + + A *pa1; + ia >> BOOST_SERIALIZATION_NVP(pa1); + BOOST_CHECK_MESSAGE(pa1 == &a, "Copy of pointer not correctly restored"); + + A *pa2; + ia >> BOOST_SERIALIZATION_NVP(pa2); + BOOST_CHECK_MESSAGE(pa2 != &a, "Pointer not correctly restored"); + + delete pa2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save(testfile); + load(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_not_serializable.cpp b/src/boost/libs/serialization/test/test_not_serializable.cpp new file mode 100644 index 000000000..178f383d1 --- /dev/null +++ b/src/boost/libs/serialization/test/test_not_serializable.cpp @@ -0,0 +1,47 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_non_serializable.cpp: test implementation level trait + +// (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) + +// test implementation level "not_serializable" +// should fail compilation + +#include <fstream> + +#include "test_tools.hpp" +#include <boost/serialization/level.hpp> +#include <boost/serialization/nvp.hpp> + +class A +{ +}; + +BOOST_CLASS_IMPLEMENTATION(A, boost::serialization::not_serializable) + +void out(A & a) +{ + test_ostream os("testfile", TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(a); +} + +void in(A & a) +{ + test_istream is("testfile", TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + A a; + out(a); + in(a); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_null_ptr.cpp b/src/boost/libs/serialization/test/test_null_ptr.cpp new file mode 100644 index 000000000..7868799e8 --- /dev/null +++ b/src/boost/libs/serialization/test/test_null_ptr.cpp @@ -0,0 +1,89 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_null_ptr.cpp: test implementation level trait + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/serialization/base_object.hpp> + +class polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ + } +public: + virtual ~polymorphic_base(){}; +}; + +class polymorphic_derived1 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +}; + +// save unregistered polymorphic classes +void save(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = NULL; + polymorphic_derived1 *rd1 = NULL; + + oa << BOOST_SERIALIZATION_NVP(rb1); + oa << BOOST_SERIALIZATION_NVP(rd1); +} + +// load unregistered polymorphic classes +void load(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_derived1 dummy; + + polymorphic_base *rb1 = & dummy; + polymorphic_derived1 *rd1 = & dummy; + + ia >> BOOST_SERIALIZATION_NVP(rb1); + BOOST_CHECK_MESSAGE(NULL == rb1, "Null pointer not restored"); + + ia >> BOOST_SERIALIZATION_NVP(rd1); + BOOST_CHECK_MESSAGE(NULL == rd1, "Null pointer not restored"); + + delete rb1; + delete rd1; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save(testfile); + load(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_nvp.cpp b/src/boost/libs/serialization/test/test_nvp.cpp new file mode 100644 index 000000000..5390db23a --- /dev/null +++ b/src/boost/libs/serialization/test/test_nvp.cpp @@ -0,0 +1,68 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_nvp.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> + +#include "B.hpp" +#include "A.ipp" + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + B b, b1; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(b); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(b1); + } + BOOST_CHECK(b == b1); + + B *bptr = &b; + B *bptr1; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(bptr); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(bptr1); + } + BOOST_CHECK(b == *bptr1); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_object.cpp b/src/boost/libs/serialization/test/test_object.cpp new file mode 100644 index 000000000..54bdc30bb --- /dev/null +++ b/src/boost/libs/serialization/test/test_object.cpp @@ -0,0 +1,70 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_object.cpp + +// (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) + +// test implementation level "object_serializable" +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/level.hpp> +#include <boost/serialization/nvp.hpp> + +class A +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ + } +}; + +BOOST_CLASS_IMPLEMENTATION(A, boost::serialization::object_serializable) + +// note: version can be assigned only to objects whose implementation +// level is object_class_info. So, doing the following will result in +// a static assertion +// BOOST_CLASS_VERSION(A, 2); + +void out(const char *testfile, A & a) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(a); +} + +void in(const char *testfile, A & a) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + A a; + out(testfile, a); + in(testfile, a); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_optional.cpp b/src/boost/libs/serialization/test/test_optional.cpp new file mode 100644 index 000000000..579056317 --- /dev/null +++ b/src/boost/libs/serialization/test/test_optional.cpp @@ -0,0 +1,96 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_optional.cpp + +// (C) Copyright 2004 Pavel Vozenilek +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/optional.hpp> +#include <boost/serialization/string.hpp> + +struct A { + int m_x; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* version */){ + ar & boost::serialization::make_nvp("x", m_x); + }; + bool operator==(const A & rhs) const { + return m_x == rhs.m_x; + } + // note that default constructor is not trivial + A() : + m_x(0) + {} + A(int x) : + m_x(x) + {} +}; + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const boost::optional<int> aoptional1; + const boost::optional<int> aoptional2(123); + const boost::optional<A> aoptional3; + A a(1); + const boost::optional<A> aoptional4(a); + const boost::optional<A *> aoptional5; + const boost::optional<A *> aoptional6(& a); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aoptional1",aoptional1); + oa << boost::serialization::make_nvp("aoptional2",aoptional2); + oa << boost::serialization::make_nvp("aoptional3",aoptional3); + oa << boost::serialization::make_nvp("aoptional4",aoptional4); + oa << boost::serialization::make_nvp("aoptional5",aoptional5); + oa << boost::serialization::make_nvp("aoptional6",aoptional6); + } + boost::optional<int> aoptional1a(999); + boost::optional<int> aoptional2a; + boost::optional<A> aoptional3a; + boost::optional<A> aoptional4a; + boost::optional<A *> aoptional5a; + boost::optional<A *> aoptional6a; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aoptional1",aoptional1a); + ia >> boost::serialization::make_nvp("aoptional2",aoptional2a); + ia >> boost::serialization::make_nvp("aoptional3",aoptional3a); + ia >> boost::serialization::make_nvp("aoptional4",aoptional4a); + ia >> boost::serialization::make_nvp("aoptional5",aoptional5a); + ia >> boost::serialization::make_nvp("aoptional6",aoptional6a); + } + BOOST_CHECK(aoptional1 == aoptional1a); + BOOST_CHECK(aoptional2 == aoptional2a); + BOOST_CHECK(aoptional3 == aoptional3a); + BOOST_CHECK(aoptional4.get() == aoptional4a.get()); + BOOST_CHECK(aoptional5 == aoptional5a); + BOOST_CHECK(*aoptional6.get() == *aoptional6a.get()); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_p_helper.cpp b/src/boost/libs/serialization/test/test_p_helper.cpp new file mode 100644 index 000000000..a4404e89a --- /dev/null +++ b/src/boost/libs/serialization/test/test_p_helper.cpp @@ -0,0 +1,160 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +// the following is to ensure that when one of the libraries changes +// BJAM rebuilds and relinks the test. +/* +#include "polymorphic_text_archive.hpp" +#include "polymorphic_text_warchive.hpp" +#include "polymorphic_binary_archive.hpp" +#include "polymorphic_xml_archive.hpp" +#include "polymorphic_xml_warchive.hpp" +*/ + +#include <string> +#include <vector> + +#include "test_tools.hpp" +#include <boost/lexical_cast.hpp> +#include <boost/serialization/split_free.hpp> +#include <boost/serialization/vector.hpp> +#include <boost/serialization/nvp.hpp> +// this test uses a special string (my_string) whose contents are shared +// and hence saved in the archive only once. We need a helper in order +// to convert my_string into a serializable type + +class my_string:public std::string +{ + typedef std::string super; + +public: + my_string(){} + my_string(const super & str): super(str){} + my_string & operator=(const super& rhs) { + super::operator=(rhs); + return *this; + } +}; + +struct my_string_helper +{ + typedef std::vector<my_string> table; + table m_t; +}; + +BOOST_SERIALIZATION_SPLIT_FREE(my_string) + +namespace boost { +namespace serialization { + +template<class Archive> +void save(Archive & ar, const my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, const my_string &, const unsigned int) = & save; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + my_string_helper::table::iterator it = std::find(t.begin(), t.end(), str); + if(it == t.end()){ + my_string_helper::table::size_type s = t.size(); + ar << make_nvp("index", s); + t.push_back(str); + ar << make_nvp("string", static_cast<const std::string &>(str)); + } + else{ + my_string_helper::table::size_type s = it - t.begin(); + ar << make_nvp("index", s); + } +} + +template<class Archive> +void load(Archive & ar, my_string & str, const unsigned int /* version */) +{ + void (* const idx)(Archive &, my_string &, const unsigned int) = & load; + void * const id = reinterpret_cast<void * const>(idx); + my_string_helper & msh = ar.template get_helper<my_string_helper>(id); + + my_string_helper::table t = msh.m_t; + + my_string_helper::table::size_type s; + ar >> make_nvp("index", s); + t.reserve(s); + if(s >= t.size()){ + std::string tmp; + ar >> make_nvp("string", tmp); + str = tmp; + t.push_back(str); + } + else{ + str = t[s]; + } +} + +} // namespace serialization +} // namespace boost +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +int test_main(int /* argc */, char * /* argv */ []) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::vector<my_string> v1; + for(int i=0; i<1000; ++i){ + v1.push_back(my_string(boost::lexical_cast<std::string>(i % 100))); + } + + // test using using polymorphic implementation. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + oa_implementation << boost::serialization::make_nvp("vector", v1); + } + { + std::vector<my_string> v2; + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + ia_implementation >> boost::serialization::make_nvp("vector", v2); + BOOST_CHECK(v1 == v2); + } + std::remove(testfile); + + // test using using polymorphic interface. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + oa_interface << boost::serialization::make_nvp("vector", v1); + } + { + std::vector<my_string> v2; + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + ia_interface >> boost::serialization::make_nvp("vector", v2); + BOOST_CHECK(v1 == v2); + } + std::remove(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_pimpl.cpp b/src/boost/libs/serialization/test/test_pimpl.cpp new file mode 100644 index 000000000..267bb5d1e --- /dev/null +++ b/src/boost/libs/serialization/test/test_pimpl.cpp @@ -0,0 +1,48 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_pimpl.cpp + +// (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) + +// should pass compilation and execution + +#include <boost/compatibility/cpp_c_headers/cstdio> // for tmpnam + +#include <fstream> +#include <boost/serialization/nvp.hpp> + +#include "test_tools.hpp" + +class B; + +class A { + friend boost::serialization::access; + B *pimpl; + template<class Archive> + void serialize(Archive & ar, const unsigned int file_version); +}; + +int test_main( int argc, char* argv[] ) +{ + char testfile[TMP_MAX]; + std::tmpnam(testfile); +// BOOST_REQUIRE(NULL != testfile); + + A a, a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os); + oa << BOOST_SERIALIZATION_NVP(a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is); + BOOST_SERIALIZATION_NVP(a1); + } +// BOOST_CHECK(a != a1); + return 0; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_polymorphic.cpp b/src/boost/libs/serialization/test/test_polymorphic.cpp new file mode 100644 index 000000000..468809882 --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic.cpp @@ -0,0 +1,94 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +// the following is to ensure that when one of the libraries changes +// BJAM rebuilds and relinks the test. +/* +#include "polymorphic_text_archive.hpp" +#include "polymorphic_text_warchive.hpp" +#include "polymorphic_binary_archive.hpp" +#include "polymorphic_xml_archive.hpp" +#include "polymorphic_xml_warchive.hpp" +*/ + +#include "test_tools.hpp" + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include <boost/serialization/nvp.hpp> +#include "test_polymorphic_A.hpp" + +int test_main(int /* argc */, char * /* argv */ []) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + const data d; + data d1; + // test using using polymorphic interface + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & oa_interface = oa_implementation; + oa_interface << BOOST_SERIALIZATION_NVP(d); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ia_interface = ia_implementation; + ia_interface >> BOOST_SERIALIZATION_NVP(d1); + } + BOOST_CHECK(d == d1); + std::remove(testfile); + + // test using using polymorphic implementation. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + oa_implementation << BOOST_SERIALIZATION_NVP(d); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + ia_implementation >> BOOST_SERIALIZATION_NVP(d1); + } + BOOST_CHECK(d == d1); + std::remove(testfile); + + // test using using polymorphic interface. + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_oarchive * oa_implementation + = new test_oarchive(os, TEST_ARCHIVE_FLAGS); + *oa_implementation << BOOST_SERIALIZATION_NVP(d); + delete oa_implementation; + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + boost::archive::polymorphic_iarchive * ia_implementation + = new test_iarchive(is, TEST_ARCHIVE_FLAGS); + *ia_implementation >> BOOST_SERIALIZATION_NVP(d1); + delete ia_implementation; + } + BOOST_CHECK(d == d1); + std::remove(testfile); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_polymorphic2.cpp b/src/boost/libs/serialization/test/test_polymorphic2.cpp new file mode 100644 index 000000000..12c27dbea --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic2.cpp @@ -0,0 +1,40 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic2.cpp + +// (C) Copyright 2009 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) + +// should pass compilation and execution +#include <fstream> + +#include "test_tools.hpp" + +#include "test_polymorphic2.hpp" + +int test_main(int /*argc*/, char* /*argv*/[]) +{ + A *a = new B(); + a->i = 3; + + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa_implementation(os, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_oarchive & opa = oa_implementation; + opa << BOOST_SERIALIZATION_NVP(a); + } + A *loaded = 0; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia_implementation(is, TEST_ARCHIVE_FLAGS); + boost::archive::polymorphic_iarchive & ipa = ia_implementation; + ipa >> BOOST_SERIALIZATION_NVP(loaded); + } + BOOST_CHECK(a->i == loaded->i); + delete a; + delete loaded; + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_polymorphic2.hpp b/src/boost/libs/serialization/test/test_polymorphic2.hpp new file mode 100644 index 000000000..c8a041fcf --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic2.hpp @@ -0,0 +1,43 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic2.hpp + +// (C) Copyright 2009 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) + +// should pass compilation and execution +namespace boost { +namespace archive { + class polymorphic_oarchive; + class polymorphic_iarchive; +} +} + +struct A { +public: + A() {} + virtual ~A() {} + + void serialize( + boost::archive::polymorphic_oarchive &ar, + const unsigned int /*version*/ + ); + void serialize( + boost::archive::polymorphic_iarchive &ar, + const unsigned int /*version*/ + ); + + int i; +}; + +struct B : A { + void serialize( + boost::archive::polymorphic_oarchive &ar, + const unsigned int /*version*/ + ); + void serialize( + boost::archive::polymorphic_iarchive &ar, + const unsigned int /*version*/ + ); +}; diff --git a/src/boost/libs/serialization/test/test_polymorphic2imp.cpp b/src/boost/libs/serialization/test/test_polymorphic2imp.cpp new file mode 100644 index 000000000..cad50dd89 --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic2imp.cpp @@ -0,0 +1,44 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic2imp.cpp + +// (C) Copyright 2009 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) + +// should pass compilation and execution + +#include <boost/serialization/export.hpp> +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +#include "test_polymorphic2.hpp" + +void A::serialize( + boost::archive::polymorphic_oarchive &ar, + const unsigned int /*version*/ +){ + ar & BOOST_SERIALIZATION_NVP(i); +} +void A::serialize( + boost::archive::polymorphic_iarchive &ar, + const unsigned int /*version*/ +){ + ar & BOOST_SERIALIZATION_NVP(i); +} +// note: only the most derived classes need be exported +// BOOST_CLASS_EXPORT(A) + +void B::serialize( + boost::archive::polymorphic_oarchive &ar, + const unsigned int /*version*/ +){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); +} +void B::serialize( + boost::archive::polymorphic_iarchive &ar, + const unsigned int /*version*/ +){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); +} +BOOST_CLASS_EXPORT(B) diff --git a/src/boost/libs/serialization/test/test_polymorphic_A.cpp b/src/boost/libs/serialization/test/test_polymorphic_A.cpp new file mode 100644 index 000000000..a4f4d1a0b --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic_A.cpp @@ -0,0 +1,58 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic_A.cpp + +// (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) + +#include "test_polymorphic_A.hpp" +#include <boost/serialization/nvp.hpp> + +#include "A.hpp" +#include "A.ipp" + +data::data() : + a(new A) +{} +data::~data(){ + delete a; +} + +bool data::operator==(const data & rhs) const { + return * (a) == *(rhs.a); +} + +#if 0 // this method fails with msvc 6.0 and borland +// now we can define the serialization for class A +template<class Archive> +void data::serialize(Archive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(a); +} + +// without the explicit instantiations below, the program will +// fail to link for lack of instantiantiation of the above function +// note: the following failed to fix link errors for vc 7.0 ! +#include <boost/archive/polymorphic_oarchive.hpp> + +template void data::serialize<boost::archive::polymorphic_oarchive>( + boost::archive::polymorphic_oarchive & ar, + const unsigned int file_version +); + +#include <boost/archive/polymorphic_iarchive.hpp> + +template void data::serialize<boost::archive::polymorphic_iarchive>( + boost::archive::polymorphic_iarchive & ar, + const unsigned int file_version +); +#endif + +// so use this +void data::serialize(boost::archive::polymorphic_oarchive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(a); +} + +void data::serialize(boost::archive::polymorphic_iarchive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(a); +} diff --git a/src/boost/libs/serialization/test/test_polymorphic_A.hpp b/src/boost/libs/serialization/test/test_polymorphic_A.hpp new file mode 100644 index 000000000..839ed27b6 --- /dev/null +++ b/src/boost/libs/serialization/test/test_polymorphic_A.hpp @@ -0,0 +1,30 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_polymorphic_A.hpp + +// (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) + +// class whose declaration is hidden by a pointer +// #include <boost/serialization/scoped_ptr.hpp> + +#include <boost/archive/polymorphic_oarchive.hpp> +#include <boost/archive/polymorphic_iarchive.hpp> + +class A; + +struct data { + // class a contains a pointer to a "hidden" declaration + // borland scoped_ptr doesn't work !!! + // boost::scoped_ptr<A> a; + A * a; +// template<class Archive> +// void serialize(Archive & ar, const unsigned int file_version); + void serialize(boost::archive::polymorphic_oarchive & ar, const unsigned int file_version); + void serialize(boost::archive::polymorphic_iarchive & ar, const unsigned int file_version); + data(); + ~data(); + bool operator==(const data & rhs) const; +}; + diff --git a/src/boost/libs/serialization/test/test_primitive.cpp b/src/boost/libs/serialization/test/test_primitive.cpp new file mode 100644 index 000000000..02ea7902f --- /dev/null +++ b/src/boost/libs/serialization/test/test_primitive.cpp @@ -0,0 +1,66 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_primitive.cpp + +// (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) + +// test implementation level "primitive_type" + +#include <cstddef> // NULL +#include <fstream> + +#include <boost/config.hpp> + +#include "test_tools.hpp" + +#include <boost/serialization/level.hpp> +#include <boost/serialization/nvp.hpp> + +struct A +{ + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + // note: should never fail here + BOOST_STATIC_ASSERT(0 == sizeof(Archive)); + } +}; + +std::ostream & operator<<(std::ostream &os, const A & /* a */){ return os;} +std::istream & operator>>(std::istream &is, A & /* a */){return is;} + +#ifndef BOOST_NO_STD_WSTREAMBUF +std::wostream & operator<<(std::wostream &os, const A & /* a */){ return os;} +std::wistream & operator>>(std::wistream &is, A & /* a */){return is;} +#endif + +BOOST_CLASS_IMPLEMENTATION(A, boost::serialization::primitive_type) + +void out(const char *testfile, A & a) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(a); +} + +void in(const char *testfile, A & a) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + A a; + out(testfile, a); + in(testfile, a); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_priority_queue.cpp b/src/boost/libs/serialization/test/test_priority_queue.cpp new file mode 100644 index 000000000..fe763bb9f --- /dev/null +++ b/src/boost/libs/serialization/test/test_priority_queue.cpp @@ -0,0 +1,65 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_priority_queue.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/vector.hpp> +#include <boost/serialization/priority_queue.hpp> + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::priority_queue<A, std::vector<A> > a_priority_queue, a_priority_queue1; + a_priority_queue.push(A()); + a_priority_queue.push(A()); + a_priority_queue.push(A()); + a_priority_queue.push(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a_priority_queue",a_priority_queue); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a_priority_queue",a_priority_queue1); + } + BOOST_CHECK(a_priority_queue.size() == a_priority_queue1.size()); + + for(int i = a_priority_queue.size(); i-- > 0;){ + const A & a1 = a_priority_queue.top(); + const A & a2 = a_priority_queue1.top(); + BOOST_CHECK(a1 == a2); + a_priority_queue.pop(); + a_priority_queue1.pop(); + } + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_private_base.cpp b/src/boost/libs/serialization/test/test_private_base.cpp new file mode 100644 index 000000000..96d8bd0c7 --- /dev/null +++ b/src/boost/libs/serialization/test/test_private_base.cpp @@ -0,0 +1,84 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_private_base.cpp + +// (C) Copyright 2009 Eric Moyer - 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) + +// should pass compilation and execution + +// invoke header for a custom archive test. + +#include <fstream> +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/export.hpp> + +#include "test_tools.hpp" + +class Base { + friend class boost::serialization::access; + int m_i; + template<class Archive> + void serialize(Archive & ar, const unsigned int version){ + ar & BOOST_SERIALIZATION_NVP(m_i); + } +protected: + bool equals(const Base &rhs) const { + return m_i == rhs.m_i; + } + Base(int i = 0) : + m_i(i) + {} +public: +}; + +class Derived : private Base { + friend class boost::serialization::access; +private: + Base & base_cast(){ + return static_cast<Base &>(*this); + } + template<class Archive> + void serialize(Archive & ar, const unsigned int version){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); + } +public: + bool operator==(const Derived &rhs) const { + return Base::equals(static_cast<const Base &>(rhs)); + } + Derived(int i = 0) : + Base(i) + {} +}; + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + Derived a(1), a1(2); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(a, a1); + std::remove(testfile); + + return 0; +} diff --git a/src/boost/libs/serialization/test/test_private_base2.cpp b/src/boost/libs/serialization/test/test_private_base2.cpp new file mode 100644 index 000000000..67d714c4c --- /dev/null +++ b/src/boost/libs/serialization/test/test_private_base2.cpp @@ -0,0 +1,104 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_private_base.cpp + +// (C) Copyright 2009 Eric Moyer - 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) + +// should pass compilation and execution + +// invoke header for a custom archive test. + +#include <fstream> +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/export.hpp> + +#include "test_tools.hpp" + +class Base { + friend class boost::serialization::access; + int m_i; + template<class Archive> + void serialize(Archive & ar, const unsigned int version){ + ar & BOOST_SERIALIZATION_NVP(m_i); + } +protected: + bool equals(const Base &rhs) const { + return m_i == rhs.m_i; + } + Base(int i = 0) : + m_i(i) + {} + virtual ~Base(){}; +public: + virtual bool operator==(const Base &rhs) const { + return false; + }// = 0; +}; + +class Derived : private Base { + friend class boost::serialization::access; +public: + virtual bool operator==(const Derived &rhs) const { + return Base::equals(static_cast<const Base &>(rhs)); + } + Derived(int i = 0) : + Base(i) + {} +}; + +//BOOST_CLASS_EXPORT(Derived) + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + Derived a(1), a1(2); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + BOOST_CHECK_EQUAL(a, a1); + std::remove(testfile); + + //Base *ta = static_cast<Base *>(&a); + //Base *ta1 = NULL; + + Derived *ta = &a; + Derived *ta1 = NULL; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ta", ta); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ta", ta1); + } + BOOST_CHECK(ta != ta1); + BOOST_CHECK(*ta == *ta1); + //BOOST_CHECK(*static_cast<Derived *>(ta) == *static_cast<Derived *>(ta1)); + + std::remove(testfile); + + return 0; +} diff --git a/src/boost/libs/serialization/test/test_private_ctor.cpp b/src/boost/libs/serialization/test/test_private_ctor.cpp new file mode 100644 index 000000000..84cc66c78 --- /dev/null +++ b/src/boost/libs/serialization/test/test_private_ctor.cpp @@ -0,0 +1,66 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_private_ctor.cpp + +// (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) + +#include <sstream> + +#include "test_tools.hpp" + +#include <boost/serialization/vector.hpp> + +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/text_oarchive.hpp> + +class V { +private: + friend int test_main(int /* argc */, char * /* argv */[]); + friend class boost::serialization::access; + int m_i; + V() : + m_i(0) + {} + template<class Archive> + void serialize(Archive& ar, unsigned /*version*/) + { + ar & m_i; + } +public: + ~V(){} + bool operator==(const V & v) const { + return m_i == v.m_i; + } +}; + +int test_main(int /* argc */, char * /* argv */[]) +{ + std::stringstream ss; + const V v; + { + boost::archive::text_oarchive oa(ss); + oa << v; + } + V v1; + { + boost::archive::text_iarchive ia(ss); + ia >> v1; + } + BOOST_CHECK(v == v1); + + const V *vptr = & v; + { + boost::archive::text_oarchive oa(ss); + oa << vptr; + } + V *vptr1; + { + boost::archive::text_iarchive ia(ss); + ia >> vptr1; + } + BOOST_CHECK(*vptr == *vptr1); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_queue.cpp b/src/boost/libs/serialization/test/test_queue.cpp new file mode 100644 index 000000000..a2d25ef3e --- /dev/null +++ b/src/boost/libs/serialization/test/test_queue.cpp @@ -0,0 +1,56 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_queue.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/deque.hpp> +#include <boost/serialization/queue.hpp> + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::queue<A> aqueue, aqueue1; + aqueue.push(A()); + aqueue.push(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aqueue",aqueue); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aqueue",aqueue1); + } + BOOST_CHECK(aqueue == aqueue1); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_recursion.cpp b/src/boost/libs/serialization/test/test_recursion.cpp new file mode 100644 index 000000000..b596f383a --- /dev/null +++ b/src/boost/libs/serialization/test/test_recursion.cpp @@ -0,0 +1,51 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_recurrsion.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "J.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test recursive structure + J j, j1; + j.j = &j; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(j); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(j1); + } + BOOST_CHECK(j == j1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_registered.cpp b/src/boost/libs/serialization/test/test_registered.cpp new file mode 100644 index 000000000..322219643 --- /dev/null +++ b/src/boost/libs/serialization/test/test_registered.cpp @@ -0,0 +1,239 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_registered.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/type_info_implementation.hpp> + +class polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ + } +public: + virtual ~polymorphic_base(){}; +}; + +class polymorphic_derived1 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +}; + +class polymorphic_derived2 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +}; + +// save derived polymorphic class +void save_derived(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_derived1 *rd1 = new polymorphic_derived1; + polymorphic_derived2 *rd2 = new polymorphic_derived2; + + // registration IS necessary when serializing pointers of + // polymorphic classes + oa.register_type(static_cast<polymorphic_derived1 *>(NULL)); + oa.register_type(static_cast<polymorphic_derived2 *>(NULL)); + oa << BOOST_SERIALIZATION_NVP(rd1); + oa << BOOST_SERIALIZATION_NVP(rd2); + + // the above opereration registers the derived classes as a side + // effect. Hence, instances can now be correctly serialized through + // a base class pointer. + polymorphic_base *rb1 = rd1; + polymorphic_base *rb2 = rd2; + oa << BOOST_SERIALIZATION_NVP(rb1); + oa << BOOST_SERIALIZATION_NVP(rb2); + + delete rd1; + delete rd2; +} + +// save derived polymorphic class +void load_derived(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_derived1 *rd1 = NULL; + polymorphic_derived2 *rd2 = NULL; + + // registration IS necessary when serializing pointers of + // polymorphic classes + ia.register_type(static_cast<polymorphic_derived1 *>(NULL)); + ia.register_type(static_cast<polymorphic_derived2 *>(NULL)); + + ia >> BOOST_SERIALIZATION_NVP(rd1); + + const boost::serialization::extended_type_info * p1; + p1 = & boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance(); + + BOOST_CHECK(NULL != p1); + + const boost::serialization::extended_type_info * p2; + p2 = boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance().get_derived_extended_type_info(*rd1); + + BOOST_CHECK(NULL != p2); + + BOOST_CHECK_MESSAGE(p1 == p2, "restored pointer d1 not of correct type"); + + ia >> BOOST_SERIALIZATION_NVP(rd2); + + BOOST_CHECK_MESSAGE( + & boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == + boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance().get_derived_extended_type_info(*rd2), + "restored pointer d2 not of correct type" + ); + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // the above opereration registers the derived classes as a side + // effect. Hence, instances can now be correctly serialized through + // a base class pointer. + ia >> BOOST_SERIALIZATION_NVP(rb1); + + BOOST_CHECK_MESSAGE( + rb1 == dynamic_cast<polymorphic_base *>(rd1), + "serialized pointers not correctly restored" + ); + + p1 = & boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance(); + + BOOST_CHECK(NULL != p1); + + p2 = boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb1); + + BOOST_CHECK(NULL != p2); + + BOOST_CHECK_MESSAGE(p1 == p2, "restored pointer b1 not of correct type"); + + ia >> BOOST_SERIALIZATION_NVP(rb2); + + BOOST_CHECK_MESSAGE( + rb2 == dynamic_cast<polymorphic_base *>(rd2), + "serialized pointers not correctly restored" + ); + + BOOST_CHECK_MESSAGE( + & boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + + delete rb1; + delete rb2; +} + +// save registered polymorphic class +void save_registered(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = new polymorphic_derived1; + polymorphic_base *rb2 = new polymorphic_derived2; + + // registration (forward declaration) will permit correct serialization + // through a pointer to a base class + oa.register_type(static_cast<polymorphic_derived1 *>(NULL)); + oa.register_type(static_cast<polymorphic_derived2 *>(NULL)); + oa << BOOST_SERIALIZATION_NVP(rb1) << BOOST_SERIALIZATION_NVP(rb2); + + delete rb1; + delete rb2; +} + +// save registered polymorphic class +void load_registered(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // registration (forward declaration) will permit correct serialization + // through a pointer to a base class + ia.register_type(static_cast<polymorphic_derived1 *>(NULL)); + ia.register_type(static_cast<polymorphic_derived2 *>(NULL)); + ia >> BOOST_SERIALIZATION_NVP(rb1) >> BOOST_SERIALIZATION_NVP(rb2); + + BOOST_CHECK_MESSAGE( + & boost::serialization::type_info_implementation<polymorphic_derived1> + ::type::get_const_instance() + == boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb1), + "restored pointer b1 not of correct type" + ); + + BOOST_CHECK_MESSAGE( + & boost::serialization::type_info_implementation<polymorphic_derived2> + ::type::get_const_instance() + == boost::serialization::type_info_implementation<polymorphic_base> + ::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + + delete rb1; + delete rb2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + + BOOST_REQUIRE(NULL != testfile); + + save_derived(testfile); + load_derived(testfile); + save_registered(testfile); + load_registered(testfile); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_reset_object_address.cpp b/src/boost/libs/serialization/test/test_reset_object_address.cpp new file mode 100644 index 000000000..a3d0195f6 --- /dev/null +++ b/src/boost/libs/serialization/test/test_reset_object_address.cpp @@ -0,0 +1,412 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_reset_object_address.cpp + +// (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) + +#include <sstream> +#include <cassert> +#include <cstdlib> // for rand() +#include <cstddef> // size_t + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::rand; + using ::size_t; +} +#endif + +#include "test_tools.hpp" + +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/polymorphic_text_oarchive.hpp> +#include <boost/archive/polymorphic_text_iarchive.hpp> + +#include <boost/serialization/list.hpp> +#include <boost/serialization/access.hpp> + +// Someday, maybe all tests will be converted to the unit test framework. +// but for now use the text execution monitor to be consistent with all +// the other tests. + +// simple test of untracked value +#include "A.hpp" +#include "A.ipp" + +void test1(){ + std::stringstream ss; + const A a; + { + boost::archive::text_oarchive oa(ss); + oa << a; + } + A a1; + { + boost::archive::text_iarchive ia(ss); + // load to temporary + A a2; + ia >> a2; + BOOST_CHECK_EQUAL(a, a2); + // move to final destination + a1 = a2; + ia.reset_object_address(& a1, & a2); + } + BOOST_CHECK_EQUAL(a, a1); +} + +// simple test of tracked value +class B { + friend class boost::serialization::access; + int m_i; + template<class Archive> + void serialize(Archive &ar, const unsigned int /*file_version*/){ + ar & m_i; + } +public: + bool operator==(const B & rhs) const { + return m_i == rhs.m_i; + } + B() : + m_i(std::rand()) + {} +}; + +//BOOST_TEST_DONT_PRINT_LOG_VALUE( B ) + +void test2(){ + std::stringstream ss; + B const b; + B const * const b_ptr = & b; + BOOST_CHECK_EQUAL(& b, b_ptr); + { + boost::archive::text_oarchive oa(ss); + oa << b; + oa << b_ptr; + } + B b1; + B * b1_ptr; + { + boost::archive::text_iarchive ia(ss); + // load to temporary + B b2; + ia >> b2; + BOOST_CHECK_EQUAL(b, b2); + // move to final destination + b1 = b2; + ia.reset_object_address(& b1, & b2); + ia >> b1_ptr; + } + BOOST_CHECK_EQUAL(b, b1); + BOOST_CHECK_EQUAL(& b1, b1_ptr); +} + +// check that nested member values are properly moved +class D { + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /*file_version*/){ + ar & m_b; + } +public: + B m_b; + bool operator==(const D & rhs) const { + return m_b == rhs.m_b; + } + D(){} +}; + +//BOOST_TEST_DONT_PRINT_LOG_VALUE( D ) + +void test3(){ + std::stringstream ss; + D const d; + B const * const b_ptr = & d.m_b; + { + boost::archive::text_oarchive oa(ss); + oa << d; + oa << b_ptr; + } + D d1; + B * b1_ptr; + { + boost::archive::text_iarchive ia(ss); + D d2; + ia >> d2; + d1 = d2; + ia.reset_object_address(& d1, & d2); + ia >> b1_ptr; + } + BOOST_CHECK_EQUAL(d, d1); + BOOST_CHECK_EQUAL(* b_ptr, * b1_ptr); +} + +// check that data pointed to by pointer members is NOT moved +class E { + int m_i; + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /*file_version*/){ + ar & m_i; + } +public: + bool operator==(const E &rhs) const { + return m_i == rhs.m_i; + } + E() : + m_i(std::rand()) + {} + E(const E & rhs) : + m_i(rhs.m_i) + {} +}; +//BOOST_TEST_DONT_PRINT_LOG_VALUE( E ) + +// check that moves don't move stuff pointed to +class F { + friend class boost::serialization::access; + E * m_eptr; + template<class Archive> + void serialize(Archive &ar, const unsigned int /*file_version*/){ + ar & m_eptr; + } +public: + bool operator==(const F &rhs) const { + return *m_eptr == *rhs.m_eptr; + } + F & operator=(const F & rhs) { + * m_eptr = * rhs.m_eptr; + return *this; + } + F(){ + m_eptr = new E; + } + F(const F & rhs){ + *this = rhs; + } + ~F(){ + delete m_eptr; + } +}; + +//BOOST_TEST_DONT_PRINT_LOG_VALUE( F ) + +void test4(){ + std::stringstream ss; + const F f; + { + boost::archive::text_oarchive oa(ss); + oa << f; + } + F f1; + { + boost::archive::text_iarchive ia(ss); + F f2; + ia >> f2; + f1 = f2; + ia.reset_object_address(& f1, & f2); + } + BOOST_CHECK_EQUAL(f, f1); +} + +// check that multiple moves keep track of the correct target +class G { + friend class boost::serialization::access; + A m_a1; + A m_a2; + A *m_pa2; + template<class Archive> + void save(Archive &ar, const unsigned int /*file_version*/) const { + ar << m_a1; + ar << m_a2; + ar << m_pa2; + } + template<class Archive> + void load(Archive &ar, const unsigned int /*file_version*/){ + A a; // temporary A + ar >> a; + m_a1 = a; + ar.reset_object_address(& m_a1, & a); + ar >> a; + m_a2 = a; + ar.reset_object_address(& m_a2, & a); + ar & m_pa2; + } + BOOST_SERIALIZATION_SPLIT_MEMBER() +public: + bool operator==(const G &rhs) const { + return + m_a1 == rhs.m_a1 + && m_a2 == rhs.m_a2 + && *m_pa2 == *rhs.m_pa2; + } + G & operator=(const G & rhs) { + m_a1 = rhs.m_a1; + m_a2 = rhs.m_a2; + m_pa2 = & m_a2; + return *this; + } + G(){ + m_pa2 = & m_a2; + } + G(const G & rhs){ + *this = rhs; + } + ~G(){} +}; + +//BOOST_TEST_DONT_PRINT_LOG_VALUE( G ) + +void test5(){ + std::stringstream ss; + const G g; + { + boost::archive::text_oarchive oa(ss); + oa << g; + } + G g1; + { + boost::archive::text_iarchive ia(ss); + ia >> g1; + } + BOOST_CHECK_EQUAL(g, g1); +} + +// joaquin's test - this tests the case where rest_object_address +// is applied to an item which in fact is not tracked so that +// the call is in fact superfluous. +struct foo +{ + int x; + +private: + friend class boost::serialization::access; + + template<class Archive> + void serialize(Archive &,const unsigned int) + { + } +}; + +struct bar +{ + foo f[2]; + foo* pf[2]; + +private: + friend class boost::serialization::access; + BOOST_SERIALIZATION_SPLIT_MEMBER() + + template<class Archive> + void save(Archive& ar,const unsigned int)const + { + for(int i=0;i<2;++i){ + ar<<f[i].x; + ar<<f[i]; + } + for(int j=0;j<2;++j){ + ar<<pf[j]; + } + } + + template<class Archive> + void load(Archive& ar,const unsigned int) + { + for(int i=0;i<2;++i){ + int x; + ar>>x; + f[i].x=x; + ar.reset_object_address(&f[i].x,&x); + ar>>f[i]; + } + for(int j=0;j<2;++j){ + ar>>pf[j]; + } + } +}; + +int test6() +{ + bar b; + b.f[0].x=0; + b.f[1].x=1; + b.pf[0]=&b.f[0]; + b.pf[1]=&b.f[1]; + + std::ostringstream oss; + { + boost::archive::text_oarchive oa(oss); + oa<<const_cast<const bar&>(b); + } + + bar b1; + b1.pf[0]=0; + b1.pf[1]=0; + + std::istringstream iss(oss.str()); + boost::archive::text_iarchive ia(iss); + ia>>b1; + BOOST_CHECK(b1.pf[0]==&b1.f[0]&&b1.pf[1]==&b1.f[1]); + + return 0; +} + +// test one of the collections +void test7(){ + std::stringstream ss; + B const b; + B const * const b_ptr = & b; + BOOST_CHECK_EQUAL(& b, b_ptr); + { + std::list<const B *> l; + l.push_back(b_ptr); + boost::archive::text_oarchive oa(ss); + oa << const_cast<const std::list<const B *> &>(l); + } + B b1; + { + std::list<B *> l; + boost::archive::text_iarchive ia(ss); + ia >> l; + delete l.front(); // prevent memory leak + } +} + +// test one of the collections with polymorphic archive +void test8(){ + std::stringstream ss; + B const b; + B const * const b_ptr = & b; + BOOST_CHECK_EQUAL(& b, b_ptr); + { + std::list<const B *> l; + l.push_back(b_ptr); + boost::archive::polymorphic_text_oarchive oa(ss); + boost::archive::polymorphic_oarchive & poa = oa; + poa << const_cast<const std::list<const B *> &>(l); + } + B b1; + { + std::list<B *> l; + boost::archive::polymorphic_text_iarchive ia(ss); + boost::archive::polymorphic_iarchive & pia = ia; + pia >> l; + delete l.front(); // prevent memory leak + } +} + +int test_main(int /* argc */, char * /* argv */[]) +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test7(); + test8(); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_set.cpp b/src/boost/libs/serialization/test/test_set.cpp new file mode 100644 index 000000000..826f83a0a --- /dev/null +++ b/src/boost/libs/serialization/test/test_set.cpp @@ -0,0 +1,111 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_set.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULLsize_t +#include <cstdio> // remove +#include <fstream> + +#include <algorithm> // std::copy +#include <vector> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::size_t; +} +#endif + +#include <boost/detail/workaround.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/set.hpp> + +#include "A.hpp" +#include "A.ipp" + +void +test_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::set<A> aset; + aset.insert(A()); + aset.insert(A()); + const A * a_ptr = & * aset.begin(); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aset", aset); + // serialize a pointer into the set + oa << boost::serialization::make_nvp("a_ptr", a_ptr); + } + std::set<A> aset1; + A * a_ptr1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aset", aset1); + // deserialize a pointer into the set + ia >> boost::serialization::make_nvp("a_ptr1", a_ptr1); + } + BOOST_CHECK_EQUAL(aset, aset1); + BOOST_CHECK_EQUAL(*a_ptr1, * aset1.begin()); + BOOST_CHECK_EQUAL(a_ptr1, & * aset1.begin()); + std::remove(testfile); +} + +void +test_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::multiset<A> amultiset; + amultiset.insert(A()); + amultiset.insert(A()); + const A * a_ptr = & * amultiset.begin(); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("amultiset", amultiset); + // serialize a pointer into the set + oa << boost::serialization::make_nvp("a_ptr", a_ptr); + } + std::multiset<A> amultiset1; + A * a_ptr1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("amultiset", amultiset1); + // deserialize a pointer into the set + ia >> boost::serialization::make_nvp("a_ptr1", a_ptr1); + } + BOOST_CHECK(amultiset == amultiset1); + BOOST_CHECK_EQUAL(*a_ptr1, * amultiset1.begin()); + BOOST_CHECK_EQUAL(a_ptr1, & * amultiset1.begin()); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ){ + test_set(); + test_multiset(); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_set_boost_unordered.cpp b/src/boost/libs/serialization/test/test_set_boost_unordered.cpp new file mode 100644 index 000000000..8c5c8ff17 --- /dev/null +++ b/src/boost/libs/serialization/test/test_set_boost_unordered.cpp @@ -0,0 +1,123 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_set.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULLsize_t +#include <cstdio> // remove +#include <fstream> + +#include <algorithm> // std::copy +#include <vector> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::size_t; +} +#endif + +#include <boost/detail/workaround.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/set.hpp> + +#include "A.hpp" +#include "A.ipp" + +#include <boost/serialization/boost_unordered_set.hpp> +#include <functional> // requires changeset [69520]; Ticket #5254 + +namespace boost { + template<> + struct hash<A> { + std::size_t operator()(const A& a) const { + return static_cast<std::size_t>(a); + } + }; +} // namespace boost + +void +test_unordered_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + boost::unordered_set<A> anunordered_set; + A a, a1; + anunordered_set.insert(a); + anunordered_set.insert(a1); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_set", anunordered_set); + } + boost::unordered_set<A> anunordered_set1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_set", anunordered_set1); + } + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_set.begin(), anunordered_set.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_set1.begin(), anunordered_set1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +void +test_unordered_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + boost::unordered_multiset<A> anunordered_multiset; + anunordered_multiset.insert(A()); + anunordered_multiset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset); + } + boost::unordered_multiset<A> anunordered_multiset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset1); + } + + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_multiset.begin(), anunordered_multiset.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_multiset1.begin(), anunordered_multiset1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ){ + test_unordered_set(); + test_unordered_multiset(); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_set_hashed.cpp b/src/boost/libs/serialization/test/test_set_hashed.cpp new file mode 100644 index 000000000..d60ed6288 --- /dev/null +++ b/src/boost/libs/serialization/test/test_set_hashed.cpp @@ -0,0 +1,262 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_set.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULLsize_t +#include <cstdio> // remove +#include <fstream> + +#include <algorithm> // std::copy +#include <vector> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::size_t; +} +#endif + +#include <boost/detail/workaround.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/set.hpp> + +#include "A.hpp" +#include "A.ipp" + +void +test_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::set<A> aset; + aset.insert(A()); + aset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aset", aset); + } + std::set<A> aset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aset", aset1); + } + BOOST_CHECK(aset == aset1); + std::remove(testfile); +} + +void +test_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::multiset<A> amultiset; + amultiset.insert(A()); + amultiset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("amultiset", amultiset); + } + std::multiset<A> amultiset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("amultiset", amultiset1); + } + BOOST_CHECK(amultiset == amultiset1); + std::remove(testfile); +} + +#ifdef BOOST_HAS_HASH + +#include <boost/serialization/hash_set.hpp> + +namespace BOOST_STD_EXTENSION_NAMESPACE { + template<> + struct hash<A> { + std::size_t operator()(const A& a) const { + return static_cast<std::size_t>(a); + } + }; +} + +void +test_hash_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + BOOST_STD_EXTENSION_NAMESPACE::hash_set<A> ahash_set; + A a, a1; + ahash_set.insert(a); + ahash_set.insert(a1); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ahash_set", ahash_set); + } + BOOST_STD_EXTENSION_NAMESPACE::hash_set<A> ahash_set1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ahash_set", ahash_set1); + } + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(ahash_set.begin(), ahash_set.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(ahash_set1.begin(), ahash_set1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +void +test_hash_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<A> ahash_multiset; + ahash_multiset.insert(A()); + ahash_multiset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ahash_multiset", ahash_multiset); + } + BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<A> ahash_multiset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ahash_multiset", ahash_multiset1); + } + + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(ahash_multiset.begin(), ahash_multiset.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(ahash_multiset1.begin(), ahash_multiset1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} +#endif + +#ifndef BOOST_NO_CXX11_HDR_UNORDERED_SET + +#include <boost/serialization/unordered_set.hpp> +#include <functional> // requires changeset [69520]; Ticket #5254 + +namespace std { + template<> + struct hash<A> { + std::size_t operator()(const A& a) const { + return static_cast<std::size_t>(a); + } + }; +} // namespace std + +void +test_unordered_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::unordered_set<A> anunordered_set; + A a, a1; + anunordered_set.insert(a); + anunordered_set.insert(a1); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_set", anunordered_set); + } + std::unordered_set<A> anunordered_set1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_set", anunordered_set1); + } + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_set.begin(), anunordered_set.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_set1.begin(), anunordered_set1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +void +test_unordered_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::unordered_multiset<A> anunordered_multiset; + anunordered_multiset.insert(A()); + anunordered_multiset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset); + } + std::unordered_multiset<A> anunordered_multiset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset1); + } + + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_multiset.begin(), anunordered_multiset.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_multiset1.begin(), anunordered_multiset1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} +#endif + +int test_main( int /* argc */, char* /* argv */[] ){ + test_set(); + test_multiset(); + + #ifdef BOOST_HAS_HASH + test_hash_set(); + test_hash_multiset(); + #endif + + #ifndef BOOST_NO_CXX11_HDR_UNORDERED_SET + test_unordered_set(); + test_unordered_multiset(); + #endif + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_set_unordered.cpp b/src/boost/libs/serialization/test/test_set_unordered.cpp new file mode 100644 index 000000000..b8453bcf1 --- /dev/null +++ b/src/boost/libs/serialization/test/test_set_unordered.cpp @@ -0,0 +1,123 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_set.cpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . +// (C) Copyright 2014 Jim Bell +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULLsize_t +#include <cstdio> // remove +#include <fstream> + +#include <algorithm> // std::copy +#include <vector> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::size_t; +} +#endif + +#include <boost/detail/workaround.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/set.hpp> + +#include "A.hpp" +#include "A.ipp" + +#include <boost/serialization/unordered_set.hpp> +#include <functional> // requires changeset [69520]; Ticket #5254 + +namespace std { + template<> + struct hash<A> { + std::size_t operator()(const A& a) const { + return static_cast<std::size_t>(a); + } + }; +} // namespace std + +void +test_unordered_set(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::unordered_set<A> anunordered_set; + A a, a1; + anunordered_set.insert(a); + anunordered_set.insert(a1); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_set", anunordered_set); + } + std::unordered_set<A> anunordered_set1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_set", anunordered_set1); + } + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_set.begin(), anunordered_set.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_set1.begin(), anunordered_set1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + std::remove(testfile); +} + +void +test_unordered_multiset(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + std::unordered_multiset<A> anunordered_multiset; + anunordered_multiset.insert(A()); + anunordered_multiset.insert(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset); + } + std::unordered_multiset<A> anunordered_multiset1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("anunordered_multiset", anunordered_multiset1); + } + + std::vector<A> tvec, tvec1; + tvec.clear(); + tvec1.clear(); + std::copy(anunordered_multiset.begin(), anunordered_multiset.end(), std::back_inserter(tvec)); + std::sort(tvec.begin(), tvec.end()); + std::copy(anunordered_multiset1.begin(), anunordered_multiset1.end(), std::back_inserter(tvec1)); + std::sort(tvec1.begin(), tvec1.end()); + BOOST_CHECK(tvec == tvec1); + + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ){ + test_unordered_set(); + test_unordered_multiset(); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_shared_ptr.cpp b/src/boost/libs/serialization/test/test_shared_ptr.cpp new file mode 100644 index 000000000..dc35842be --- /dev/null +++ b/src/boost/libs/serialization/test/test_shared_ptr.cpp @@ -0,0 +1,322 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_shared_ptr.cpp + +// (C) Copyright 2002 Robert Ramey- http://www.rrsd.com - David Tonge . +// 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 <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> +#include <boost/serialization/shared_ptr.hpp> +#include <boost/serialization/weak_ptr.hpp> + +#include "test_tools.hpp" + +// This is a simple class. It contains a counter of the number +// of objects of this class which have been instantiated. +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); + } + A(A const & rhs); + A& operator=(A const & rhs); +public: + static int count; + bool operator==(const A & rhs) const { + return x == rhs.x; + } + A(){++count;} // default constructor + virtual ~A(){--count;} // default destructor +}; + +BOOST_SERIALIZATION_SHARED_PTR(A) + +int A::count = 0; + +// B is a subclass of A +class B : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } +public: + static int count; + B() : A() {}; + virtual ~B() {}; +}; + +// B needs to be exported because its serialized via a base class pointer +BOOST_CLASS_EXPORT(B) +BOOST_SERIALIZATION_SHARED_PTR(B) + +// test a non-polymorphic class +class C +{ +private: + friend class boost::serialization::access; + int z; + template<class Archive> + void serialize(Archive & ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_NVP(z); + } +public: + static int count; + bool operator==(const C & rhs) const { + return z == rhs.z; + } + C() : + z(++count) // default constructor + {} + virtual ~C(){--count;} // default destructor +}; + +int C::count = 0; + +template<class SP> +void save(const char * testfile, const SP & spa) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(spa); +} + +template<class SP> +void load(const char * testfile, SP & spa) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(spa); +} + +// trivial test +template<class SP> +void save_and_load(SP & spa) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save(testfile, spa); + SP spa1; + load(testfile, spa1); + + BOOST_CHECK( + (spa.get() == NULL && spa1.get() == NULL) + || * spa == * spa1 + ); + std::remove(testfile); +} + +template<class SP> +void save2( + const char * testfile, + const SP & first, + const SP & second +){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); +} + +template<class SP> +void load2( + const char * testfile, + SP & first, + SP & second) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); +} + +// Run tests by serializing two shared_ptrs into an archive, +// clearing them (deleting the objects) and then reloading the +// objects back from an archive. +template<class SP> +void save_and_load2(SP & first, SP & second) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save2(testfile, first, second); + + // Clear the pointers, thereby destroying the objects they contain + first.reset(); + second.reset(); + + load2(testfile, first, second); + + BOOST_CHECK(first == second); + std::remove(testfile); +} + +template<class SP, class WP> +void save3( + const char * testfile, + SP & first, + SP & second, + WP & third +){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(third); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); +} + +template<class SP, class WP> +void load3( + const char * testfile, + SP & first, + SP & second, + WP & third +){ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + // note that we serialize the weak pointer first + ia >> BOOST_SERIALIZATION_NVP(third); + // inorder to test that a temporarily solitary weak pointer + // correctly restored. + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); +} + +template<class SP, class WP> +void save_and_load3( + SP & first, + SP & second, + WP & third +){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save3(testfile, first, second, third); + + // Clear the pointers, thereby destroying the objects they contain + first.reset(); + second.reset(); + third.reset(); + + load3(testfile, first, second, third); + + BOOST_CHECK(first == second); + BOOST_CHECK(first == third.lock()); + std::remove(testfile); +} + +template<class SP> +void save4(const char * testfile, const SP & spc) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(spc); +} + +template<class SP> +void load4(const char * testfile, SP & spc) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(spc); +} + +// trivial test +template<class SP> +void save_and_load4(SP & spc) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save4(testfile, spc); + SP spc1; + load4(testfile, spc1); + + BOOST_CHECK( + (spc.get() == NULL && spc1.get() == NULL) + || * spc == * spc1 + ); + std::remove(testfile); +} + +// This does the tests +template<template<class T> class SPT , template<class T> class WPT > +bool test(){ + { + SPT<A> spa; + // These are our shared_ptrs + spa = SPT<A>(new A); + SPT<A> spa1 = spa; + spa1 = spa; + } + { + // These are our shared_ptrs + SPT<A> spa; + + // trivial test 1 + save_and_load(spa); + + //trivival test 2 + spa = SPT<A>(new A); + save_and_load(spa); + + // Try to save and load pointers to As + spa = SPT<A>(new A); + SPT<A> spa1 = spa; + save_and_load2(spa, spa1); + + // Try to save and load pointers to Bs + spa = SPT<A>(new B); + spa1 = spa; + save_and_load2(spa, spa1); + + // test a weak pointer + spa = SPT<A>(new A); + spa1 = spa; + WPT<A> wp = spa; + save_and_load3(spa, spa1, wp); + + // obj of type B gets destroyed + // as smart_ptr goes out of scope + } + BOOST_CHECK(A::count == 0); + { + // Try to save and load pointers to Cs + SPT<C> spc; + spc = SPT<C>(new C); + save_and_load4(spc); + } + BOOST_CHECK(C::count == 0); + return true; +} +// This does the tests +int test_main(int /* argc */, char * /* argv */[]) +{ + bool result = true; + result &= test<boost::shared_ptr, boost::weak_ptr>(); + #ifndef BOOST_NO_CXX11_SMART_PTR + result &= test<std::shared_ptr, std::weak_ptr>(); + #endif + return result ? EXIT_SUCCESS : EXIT_FAILURE; +} + diff --git a/src/boost/libs/serialization/test/test_shared_ptr_132.cpp b/src/boost/libs/serialization/test/test_shared_ptr_132.cpp new file mode 100644 index 000000000..0d11b0002 --- /dev/null +++ b/src/boost/libs/serialization/test/test_shared_ptr_132.cpp @@ -0,0 +1,230 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_shared_ptr.cpp + +// (C) Copyright 2002 Robert Ramey- http://www.rrsd.com - David Tonge . +// 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 <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/shared_ptr_132.hpp> +#include <boost/serialization/shared_ptr.hpp> +#include <boost/serialization/weak_ptr.hpp> +#include <boost/serialization/split_member.hpp> + +#include <boost/preprocessor/stringize.hpp> + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> + +// This is a simple class. It contains a counter of the number +// of objects of this class which have been instantiated. +class A +{ +private: + friend class boost::serialization::access; + int x; + template<class Archive> + void save(Archive & ar, const unsigned int /* file_version */) const { + ar << BOOST_SERIALIZATION_NVP(x); + } + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */) { + ar >> BOOST_SERIALIZATION_NVP(x); + } + BOOST_SERIALIZATION_SPLIT_MEMBER() +public: + static int count; + bool operator==(const A & rhs) const { + return x == rhs.x; + } + A(){++count;} // default constructor + virtual ~A(){--count;} // default destructor +}; + +BOOST_SERIALIZATION_SHARED_PTR(A) + +// B is a subclass of A +class B : public A +{ +private: + friend class boost::serialization::access; + template<class Archive> + void save(Archive & ar, const unsigned int /* file_version */ )const { + ar << BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } + template<class Archive> + void load(Archive & ar, const unsigned int /* file_version */){ + ar >> BOOST_SERIALIZATION_BASE_OBJECT_NVP(A); + } + BOOST_SERIALIZATION_SPLIT_MEMBER() +public: + static int count; + B() : A() {}; + virtual ~B() {}; +}; + +// B needs to be exported because its serialized via a base class pointer +BOOST_SHARED_POINTER_EXPORT(B) +BOOST_SERIALIZATION_SHARED_PTR(B) + +int A::count = 0; + +template<class T> +void save(const char * testfile, const T & spa) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(spa); +} + +template<class T> +void load(const char * testfile, T & spa) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(spa); +} + +// trivial test +template<class T> +void save_and_load(const T & spa) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save(testfile, spa); + + // note that we're loading to a current version of shared_ptr + // regardless of the orignal saved type - this tests backward + // archive compatibility + boost::shared_ptr<A> spa1; + load(testfile, spa1); + + BOOST_CHECK( + (spa.get() == NULL && spa1.get() == NULL) + || * spa == * spa1 + ); + std::remove(testfile); +} + +template<class T> +void save2( + const char * testfile, + const T & first, + const T & second +){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); +} + +template<class T> +void load2( + const char * testfile, + T & first, + T & second) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); +} + +// Run tests by serializing two shared_ptrs into an archive, +// clearing them (deleting the objects) and then reloading the +// objects back from an archive. +template<class T> +void save_and_load2(T & first, T & second) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + save2(testfile, first, second); + + // Clear the pointers, thereby destroying the objects they contain + first.reset(); + second.reset(); + + boost::shared_ptr<A> first1, second1; + load2(testfile, first1, second1); + + BOOST_CHECK(first1 == second1); + std::remove(testfile); +} + +template<class T> +void save3( + const char * testfile, + const T & first, + const T & second, + const T & third +){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(third); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); +} + +template<class T> +void load3( + const char * testfile, + T & first, + T & second, + T & third +){ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + // note that we serialize the weak pointer first + ia >> BOOST_SERIALIZATION_NVP(third); + // inorder to test that a temporarily solitary weak pointer + // correcttly restored. + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); +} + +// This does the tests +int test_main(int /* argc */, char * /* argv */[]) +{ + // These are our shared_ptrs + boost_132::shared_ptr<A> spa; + + // trivial test 1 + save_and_load(spa); + + //trivial test 2 + spa.reset(); + spa = boost_132::shared_ptr<A>(new A); + save_and_load(spa); + + // Try to save and load pointers to As, to a text archive + spa = boost_132::shared_ptr<A>(new A); + boost_132::shared_ptr<A> spa1 = spa; + save_and_load2(spa, spa1); + + // Try to save and load pointers to Bs, to a text archive + spa = boost_132::shared_ptr<A>(new B); + save_and_load(spa); + + spa1 = spa; + save_and_load2(spa, spa1); + + // obj of type B gets destroyed + // as smart_ptr goes out of scope + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_shared_ptr_multi_base.cpp b/src/boost/libs/serialization/test/test_shared_ptr_multi_base.cpp new file mode 100644 index 000000000..2ebab9816 --- /dev/null +++ b/src/boost/libs/serialization/test/test_shared_ptr_multi_base.cpp @@ -0,0 +1,302 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_shared_ptr_multi_base.cpp + +// (C) Copyright 2002 Robert Ramey- http://www.rrsd.com and Takatoshi Kondo. +// 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 <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/export.hpp> + +#include <boost/serialization/shared_ptr.hpp> +#include <boost/serialization/weak_ptr.hpp> + +#include "test_tools.hpp" + +struct Base1 { + Base1() {} + Base1(int x) : m_x(1 + x) {} + virtual ~Base1(){ + } + int m_x; + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +struct Base2 { + Base2() {} + Base2(int x) : m_x(2 + x) {} + int m_x; + virtual ~Base2(){ + } + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +struct Base3 { + Base3() {} + Base3(int x) : m_x(3 + x) {} + virtual ~Base3(){ + } + int m_x; + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +// Sub is a subclass of Base1, Base1 and Base3. +struct Sub:public Base1, public Base2, public Base3 { + static int count; + Sub() { + ++count; + } + Sub(int x) : + Base1(x), + Base2(x), + m_x(x) + { + ++count; + } + Sub(const Sub & rhs) : + m_x(rhs.m_x) + { + ++count; + } + virtual ~Sub() { + assert(0 < count); + --count; + } + int m_x; + // serialize + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */) + { + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base1); + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base2); + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base3); + ar & BOOST_SERIALIZATION_NVP(m_x); + } +}; + +// Sub needs to be exported because its serialized via a base class pointer +BOOST_CLASS_EXPORT(Sub) +BOOST_SERIALIZATION_SHARED_PTR(Sub) + +int Sub::count = 0; + +template <class FIRST, class SECOND> +void save2( + const char * testfile, + const FIRST& first, + const SECOND& second +){ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(first); + oa << BOOST_SERIALIZATION_NVP(second); +} + +template <class FIRST, class SECOND> +void load2( + const char * testfile, + FIRST& first, + SECOND& second) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(first); + ia >> BOOST_SERIALIZATION_NVP(second); +} + +// Run tests by serializing two shared_ptrs into an archive, +// clearing them (deleting the objects) and then reloading the +// objects back from an archive. + +template<class T, class U> +boost::shared_ptr<T> dynamic_pointer_cast(boost::shared_ptr<U> const & u) +BOOST_NOEXCEPT +{ + return boost::dynamic_pointer_cast<T>(u); +} + +#ifndef BOOST_NO_CXX11_SMART_PTR +template<class T, class U> +std::shared_ptr<T> dynamic_pointer_cast(std::shared_ptr<U> const & u) +BOOST_NOEXCEPT +{ + return std::dynamic_pointer_cast<T>(u); +} +#endif + +// Serialization sequence +// First, shared_ptr +// Second, weak_ptr +template <class SP, class WP> +void shared_weak( + SP & first, + WP & second +){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + int firstm = first->m_x; + + BOOST_REQUIRE(! second.expired()); + int secondm = second.lock()->m_x; + save2(testfile, first, second); + + // Clear the pointers, thereby destroying the objects they contain + second.reset(); + first.reset(); + + load2(testfile, first, second); + BOOST_CHECK(! second.expired()); + + // Check data member + BOOST_CHECK(firstm == first->m_x); + BOOST_CHECK(secondm == second.lock()->m_x); + // Check pointer to vtable + BOOST_CHECK(::dynamic_pointer_cast<Sub>(first)); + BOOST_CHECK(::dynamic_pointer_cast<Sub>(second.lock())); + + std::remove(testfile); +} + +// Serialization sequence +// First, weak_ptr +// Second, shared_ptr +template <class WP, class SP> +void weak_shared( + WP & first, + SP & second +){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + BOOST_CHECK(! first.expired()); + int firstm = first.lock()->m_x; + int secondm = second->m_x; + save2(testfile, first, second); + + // Clear the pointers, thereby destroying the objects they contain + first.reset(); + second.reset(); + + load2(testfile, first, second); + BOOST_CHECK(! first.expired()); + + // Check data member + BOOST_CHECK(firstm == first.lock()->m_x); + BOOST_CHECK(secondm == second->m_x); + // Check pointer to vtable + BOOST_CHECK(::dynamic_pointer_cast<Sub>(first.lock())); + BOOST_CHECK(::dynamic_pointer_cast<Sub>(second)); + + std::remove(testfile); +} + +// This does the tests +template<template<class T> class SPT, template<class T> class WPT> +bool test(){ + // Both Sub + SPT<Sub> tc1_sp(new Sub(10)); + WPT<Sub> tc1_wp(tc1_sp); + shared_weak(tc1_sp, tc1_wp); + weak_shared(tc1_wp, tc1_sp); + tc1_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Sub and Base1 + SPT<Sub> tc2_sp(new Sub(10)); + WPT<Base1> tc2_wp(tc2_sp); + shared_weak(tc2_sp, tc2_wp); + weak_shared(tc2_wp, tc2_sp); + tc2_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Sub and Base2 + SPT<Sub> tc3_sp(new Sub(10)); + WPT<Base2> tc3_wp(tc3_sp); + shared_weak(tc3_sp, tc3_wp); + weak_shared(tc3_wp, tc3_sp); + tc3_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Sub and Base3 + SPT<Sub> tc4_sp(new Sub(10)); + WPT<Base3> tc4_wp(tc4_sp); + shared_weak(tc4_sp, tc4_wp); + weak_shared(tc4_wp, tc4_sp); + tc4_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Base1 and Base2 + SPT<Sub> tc5_sp_tmp(new Sub(10)); + SPT<Base1> tc5_sp(tc5_sp_tmp); + WPT<Base2> tc5_wp(tc5_sp_tmp); + tc5_sp_tmp.reset(); + shared_weak(tc5_sp, tc5_wp); + weak_shared(tc5_wp, tc5_sp); + tc5_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Base2 and Base3 + SPT<Sub> tc6_sp_tmp(new Sub(10)); + SPT<Base2> tc6_sp(tc6_sp_tmp); + WPT<Base3> tc6_wp(tc6_sp_tmp); + tc6_sp_tmp.reset(); + shared_weak(tc6_sp, tc6_wp); + weak_shared(tc6_wp, tc6_sp); + tc6_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + // Base3 and Base1 + SPT<Sub> tc7_sp_tmp(new Sub(10)); + SPT<Base3> tc7_sp(tc7_sp_tmp); + WPT<Base1> tc7_wp(tc7_sp_tmp); + tc7_sp_tmp.reset(); + shared_weak(tc7_sp, tc7_wp); + weak_shared(tc7_wp, tc7_sp); + tc7_sp.reset(); + BOOST_CHECK(0 == Sub::count); + + return true; +} + +// This does the tests +int test_main(int /* argc */, char * /* argv */[]) +{ + bool result = true; + result &= test<boost::shared_ptr, boost::weak_ptr>(); + #ifndef BOOST_NO_CXX11_SMART_PTR + result &= test<std::shared_ptr, std::weak_ptr>(); + #endif + return result ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/src/boost/libs/serialization/test/test_simple_class.cpp b/src/boost/libs/serialization/test/test_simple_class.cpp new file mode 100644 index 000000000..41c8cb21a --- /dev/null +++ b/src/boost/libs/serialization/test/test_simple_class.cpp @@ -0,0 +1,83 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_simple_class.cpp + +// (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) + +// should pass compilation and execution + +// invoke header for a custom archive test. + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> +#include <cmath> +#include <boost/math/special_functions/next.hpp> + +#include <boost/config.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +bool A::check_equal(const A &rhs) const +{ + BOOST_CHECK_EQUAL(b, rhs.b); + BOOST_CHECK_EQUAL(l, rhs.l); + #ifndef BOOST_NO_INT64_T + BOOST_CHECK_EQUAL(f, rhs.f); + BOOST_CHECK_EQUAL(g, rhs.g); + #endif + BOOST_CHECK_EQUAL(m, rhs.m); + BOOST_CHECK_EQUAL(n, rhs.n); + BOOST_CHECK_EQUAL(o, rhs.o); + BOOST_CHECK_EQUAL(p, rhs.p); + BOOST_CHECK_EQUAL(q, rhs.q); + #ifndef BOOST_NO_CWCHAR + BOOST_CHECK_EQUAL(r, rhs.r); + #endif + BOOST_CHECK_EQUAL(c, rhs.c); + BOOST_CHECK_EQUAL(s, rhs.s); + BOOST_CHECK_EQUAL(t, rhs.t); + BOOST_CHECK_EQUAL(u, rhs.u); + BOOST_CHECK_EQUAL(v, rhs.v); + BOOST_CHECK_EQUAL(l, rhs.l); + BOOST_CHECK(std::abs( boost::math::float_distance(w, rhs.w)) < 2); + BOOST_CHECK(std::abs( boost::math::float_distance(x, rhs.x)) < 2); + BOOST_CHECK(!(0 != y.compare(rhs.y))); + #ifndef BOOST_NO_STD_WSTRING + BOOST_CHECK(!(0 != z.compare(rhs.z))); + #endif + return true; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + A a, a1; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("a", a); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("a", a1); + } + a.check_equal(a1); + std::remove(testfile); + return 0; +} diff --git a/src/boost/libs/serialization/test/test_simple_class_ptr.cpp b/src/boost/libs/serialization/test/test_simple_class_ptr.cpp new file mode 100644 index 000000000..795e9a6fa --- /dev/null +++ b/src/boost/libs/serialization/test/test_simple_class_ptr.cpp @@ -0,0 +1,53 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_simple_class_ptr.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + + BOOST_REQUIRE(NULL != testfile); + + const A *ta = new A(); + A *ta1 = NULL; + + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("ta", ta); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("ta", ta1); + } + BOOST_CHECK(ta != ta1); + BOOST_CHECK(*ta == *ta1); + delete ta; + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_singleton.cpp b/src/boost/libs/serialization/test/test_singleton.cpp new file mode 100644 index 000000000..5d3b88df7 --- /dev/null +++ b/src/boost/libs/serialization/test/test_singleton.cpp @@ -0,0 +1,74 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_singleton.cpp + +// (C) Copyright 2018 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) + +// should pass compilation and execution + +#include <iostream> +#include <boost/serialization/singleton.hpp> + +#include "test_tools.hpp" + +static int i = 0; + +struct A { + int m_id; + A() : m_id(++i) {} + ~A(){ + // verify that objects are destroyed in sequence reverse of construction + if(i-- != m_id) std::terminate(); + } +}; + +struct B { + int m_id; + B() : m_id(++i) {} + ~B(){ + // verify that objects are destroyed in sequence reverse of construction + if(i-- != m_id) std::terminate(); + } +}; + +struct C { + int m_id; + C() : m_id(++i) {} + ~C(){ + // verify that objects are destroyed in sequence reverse of construction + if(i-- != m_id) std::terminate(); + } +}; + +struct D { + int m_id; + D(){ + // verify that only one object is indeed created + const C & c = boost::serialization::singleton<C>::get_const_instance(); + const C & c1 = boost::serialization::singleton<C>::get_const_instance(); + BOOST_CHECK_EQUAL(&c, &c1); + + // verify that objects are created in sequence of definition + BOOST_CHECK_EQUAL(c.m_id, 1); + const B & b = boost::serialization::singleton<B>::get_const_instance(); + BOOST_CHECK_EQUAL(b.m_id, 2); + const A & a = boost::serialization::singleton<A>::get_const_instance(); + BOOST_CHECK_EQUAL(a.m_id, 3); + std::cout << a.m_id << b.m_id << c.m_id << '\n'; + + m_id = ++i; + } + ~D(){ + // verify that objects are destroyed in sequence reverse of construction + if(i-- != m_id) std::terminate(); + } +}; + +int test_main(int, char *[]){ + return 0; +} + +// note: not a singleton +D d; diff --git a/src/boost/libs/serialization/test/test_singleton_inherited.cpp b/src/boost/libs/serialization/test/test_singleton_inherited.cpp new file mode 100644 index 000000000..08164bcf3 --- /dev/null +++ b/src/boost/libs/serialization/test/test_singleton_inherited.cpp @@ -0,0 +1,81 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_singleton_inherited.cpp: +// Test the singleton class for a "inherited" singleton (used as Foo:public singleton<Foo>) +// This can be uses as singleton<Foo>::get_const_instance() OR Foo::get_const_instance() +// +// - is_destroyed returns false when singleton is active or uninitialized +// - is_destroyed returns true when singleton is destructed +// - the singleton is eventually destructed (no memory leak) + +// (C) Copyright 2018 Alexander Grund +// 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 "test_tools.hpp" +#include <boost/serialization/singleton.hpp> +#include <boost/preprocessor/stringize.hpp> +#include <stdexcept> + +// Can't use BOOST_TEST because: +// a) destructors are called after program exit +// b) This is intended to be used by shared libraries too which would then need their own report_errors call +// We halso have to disable the Wterminate warning as we call this from dtors +// C++ will terminate the program in such cases which is OK here +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wterminate" +#define THROW_ON_FALSE(cond) if(!(cond)) throw std::runtime_error(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") Assertion failed: " #cond) + +// Enum to designate the state of the singletonized instances +enum ConstructionState{CS_UNINIT, CS_INIT, CS_DESTROYED}; + +// We need another singleton to check for the destruction of the singletons at program exit +// We don't need all the magic for shared library anti-optimization and can keep it very simple +struct controller{ + static controller& getInstance(){ + static controller instance; + return instance; + } + ConstructionState state; +private: + controller() { + state = CS_UNINIT; + } + ~controller(); +}; + +// A simple class that sets its construction state in the controller singleton +struct Foo: boost::serialization::singleton<Foo>{ + Foo(): i(42) { + // access controller singleton. Therefore controller will be constructed before this + THROW_ON_FALSE(controller::getInstance().state == CS_UNINIT); + controller::getInstance().state = CS_INIT; + } + ~Foo() { + // Because controller is constructed before this, it will be destructed AFTER this. Hence controller is still valid + THROW_ON_FALSE(controller::getInstance().state == CS_INIT); + controller::getInstance().state = CS_DESTROYED; + } + // Volatile to prevent compiler optimization from removing this + volatile int i; +}; + +controller::~controller() { + // If this fails, the singletons were not freed and memory is leaked + THROW_ON_FALSE(state == CS_DESTROYED); + // If this fails, then the destroyed flag is not set and one may use a deleted instance if relying on this flag + THROW_ON_FALSE(boost::serialization::singleton<Foo>::is_destroyed()); + THROW_ON_FALSE(Foo::is_destroyed()); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + // Check if the singleton is alive and use it + BOOST_CHECK(!boost::serialization::singleton<Foo>::is_destroyed()); + BOOST_CHECK(!Foo::is_destroyed()); + + BOOST_CHECK(boost::serialization::singleton<Foo>::get_const_instance().i == 42); + BOOST_CHECK(Foo::get_const_instance().i == 42); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_singleton_plain.cpp b/src/boost/libs/serialization/test/test_singleton_plain.cpp new file mode 100644 index 000000000..7c3061415 --- /dev/null +++ b/src/boost/libs/serialization/test/test_singleton_plain.cpp @@ -0,0 +1,77 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_singleton_plain.cpp: +// Test the singleton class for a "plain" singleton (used as singleton<Foo>) +// +// - is_destroyed returns false when singleton is active or uninitialized +// - is_destroyed returns true when singleton is destructed +// - the singleton is eventually destructed (no memory leak) + +// (C) Copyright 2018 Alexander Grund +// 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 "test_tools.hpp" +#include <boost/serialization/singleton.hpp> +#include <boost/preprocessor/stringize.hpp> +#include <stdexcept> + +// Can't use BOOST_TEST because: +// a) destructors are called after program exit +// b) This is intended to be used by shared libraries too which would then need their own report_errors call +// We halso have to disable the Wterminate warning as we call this from dtors +// C++ will terminate the program in such cases which is OK here +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wterminate" +#define THROW_ON_FALSE(cond) if(!(cond)) throw std::runtime_error(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") Assertion failed: " #cond) + +// Enum to designate the state of the singletonized instances +enum ConstructionState{CS_UNINIT, CS_INIT, CS_DESTROYED}; + +// We need another singleton to check for the destruction of the singletons at program exit +// We don't need all the magic for shared library anti-optimization and can keep it very simple +struct controller{ + static controller& getInstance(){ + static controller instance; + return instance; + } + ConstructionState state; +private: + controller() { + state = CS_UNINIT; + } + ~controller(); +}; + +// A simple class that sets its construction state in the controller singleton +struct Foo{ + Foo(): i(42) { + // access controller singleton. Therefore controller will be constructed before this + THROW_ON_FALSE(controller::getInstance().state == CS_UNINIT); + controller::getInstance().state = CS_INIT; + } + ~Foo() { + // Because controller is constructed before this, it will be destructed AFTER this. Hence controller is still valid + THROW_ON_FALSE(controller::getInstance().state == CS_INIT); + controller::getInstance().state = CS_DESTROYED; + } + // Volatile to prevent compiler optimization from removing this + volatile int i; +}; + +controller::~controller() { + // If this fails, the singletons were not freed and memory is leaked + THROW_ON_FALSE(state == CS_DESTROYED); + // If this fails, then the destroyed flag is not set and one may use a deleted instance if relying on this flag + THROW_ON_FALSE(boost::serialization::singleton<Foo>::is_destroyed()); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + // Check if the singleton is alive and use it + BOOST_CHECK(!boost::serialization::singleton<Foo>::is_destroyed()); + + BOOST_CHECK(boost::serialization::singleton<Foo>::get_const_instance().i == 42); + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_slist.cpp b/src/boost/libs/serialization/test/test_slist.cpp new file mode 100644 index 000000000..9c387106d --- /dev/null +++ b/src/boost/libs/serialization/test/test_slist.cpp @@ -0,0 +1,55 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include "A.hpp" +#include "A.ipp" + +#include <boost/serialization/slist.hpp> +void test_slist(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_STD_EXTENSION_NAMESPACE::slist<A> aslist; + aslist.push_front(A()); + aslist.push_front(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("aslist", aslist); + } + BOOST_STD_EXTENSION_NAMESPACE::slist<A> aslist1;{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aslist", aslist1); + } + BOOST_CHECK(aslist == aslist1); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_slist(); + return EXIT_SUCCESS; +} + +// EOF + diff --git a/src/boost/libs/serialization/test/test_slist_ptrs.cpp b/src/boost/libs/serialization/test/test_slist_ptrs.cpp new file mode 100644 index 000000000..e4d830be6 --- /dev/null +++ b/src/boost/libs/serialization/test/test_slist_ptrs.cpp @@ -0,0 +1,88 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_list.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/type_traits/is_pointer.hpp> +#include <boost/static_assert.hpp> +#include <boost/checked_delete.hpp> + +#include <boost/archive/archive_exception.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> + +#include "A.hpp" +#include "A.ipp" + +template<class T> +struct ptr_equal_to { + BOOST_STATIC_ASSERT(::boost::is_pointer< T >::value); + bool operator()(T const _Left, T const _Right) const + { + if(NULL == _Left && NULL == _Right) + return true; + if(typeid(*_Left) != typeid(*_Right)) + return false; + return *_Left == *_Right; + } +}; + +#include <boost/serialization/slist.hpp> +void test_slist(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + BOOST_STD_EXTENSION_NAMESPACE::slist<A *> aslist; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + aslist.push_front(new A); + aslist.push_front(new A); + oa << boost::serialization::make_nvp("aslist", aslist); + } + BOOST_STD_EXTENSION_NAMESPACE::slist<A *> aslist1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aslist", aslist1); + BOOST_CHECK(aslist.size() == aslist1.size() && + std::equal(aslist.begin(),aslist.end(),aslist1.begin(),ptr_equal_to<A *>()) + ); + } + std::for_each( + aslist.begin(), + aslist.end(), + boost::checked_deleter<A>() + ); + std::for_each( + aslist1.begin(), + aslist1.end(), + boost::checked_deleter<A>() + ); + std::remove(testfile); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + test_slist(); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_smart_cast.cpp b/src/boost/libs/serialization/test/test_smart_cast.cpp new file mode 100644 index 000000000..97272ad64 --- /dev/null +++ b/src/boost/libs/serialization/test/test_smart_cast.cpp @@ -0,0 +1,236 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_smart_cast.cpp: + +// (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) +// <gennadiy.rozental@tfn.com> + +#include <exception> +#include <boost/serialization/smart_cast.hpp> + +#include "test_tools.hpp" +#include <boost/noncopyable.hpp> + +using namespace boost::serialization; + +class Base1 : public boost::noncopyable +{ + char a; +}; + +class Base2 +{ + int b; +}; + +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable : 4511 4512) +#endif + +class Derived : public Base1, public Base2 +{ + long c; +}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +// if compiler doesn't support TPS, the smart_cast syntax doesn't +// work for references. One has to use the smart_cast_reference +// syntax (tested below ) instead. + +void test_static_reference_cast_2(){ + Derived d; + Base1 & b1 = static_cast<Base1 &>(d); + Base2 & b2 = static_cast<Base2 &>(d); + + Base1 & scb1 = smart_cast<Base1 &, Derived &>(d); + Base2 & scb2 = smart_cast<Base2 &, Derived &>(d); + BOOST_CHECK_EQUAL(& b1, & scb1); + BOOST_CHECK_EQUAL(& b2, & scb2); + + // downcast +// BOOST_CHECK_EQUAL(& d, & (smart_cast<Derived &, Base1 &>(b1))); +// BOOST_CHECK_EQUAL(& d, & (smart_cast<Derived &, Base2 &>(b2))); + + // crosscast pointers fails at compiler time + // BOOST_CHECK_EQUAL(pB2,smart_cast<B2 *>(pB1)); + // though explicit cross cast will always work + BOOST_CHECK_EQUAL(& b2,( + & smart_cast<Base2 &, Derived &>( + smart_cast<Derived &, Base1 &>(b1) + )) + ); +} + +void test_static_reference_cast_1(){ + Derived d; + Base1 & b1 = static_cast<Base1 &>(d); + Base2 & b2 = static_cast<Base2 &>(d); + + Base1 & scb1 = smart_cast_reference<Base1 &>(d); + Base2 & scb2 = smart_cast_reference<Base2 &>(d); + BOOST_CHECK_EQUAL(& b1, & scb1); + BOOST_CHECK_EQUAL(& b2, & scb2); + + // downcast + BOOST_CHECK_EQUAL(& d, & (smart_cast_reference<Derived &>(b1))); + BOOST_CHECK_EQUAL(& d, & (smart_cast_reference<Derived &>(b2))); + + // crosscast pointers fails at compiler time + // BOOST_CHECK_EQUAL(pB2,smart_cast<B2 *>(pB1)); + // though explicit cross cast will always work + BOOST_CHECK_EQUAL(& b2,( + & smart_cast_reference<Base2 &>( + smart_cast_reference<Derived &>(b1) + )) + ); +} + +void test_static_pointer_cast(){ + // pointers + Derived d; + Derived *pD = & d; + Base1 *pB1 = pD; + Base2 *pB2 = pD; + + // upcast + BOOST_CHECK_EQUAL(pB1, smart_cast<Base1 *>(pD)); + BOOST_CHECK_EQUAL(pB2, smart_cast<Base2 *>(pD)); + + // downcast + BOOST_CHECK_EQUAL(pD, smart_cast<Derived *>(pB1)); + BOOST_CHECK_EQUAL(pD, smart_cast<Derived *>(pB2)); + + // crosscast pointers fails at compiler time + // BOOST_CHECK_EQUAL(pB2, smart_cast<Base2 *>(pB1)); + + // though explicit cross cast will always work + BOOST_CHECK_EQUAL(pB2, + smart_cast<Base2 *>( + smart_cast<Derived *>(pB1) + ) + ); +} + +class VBase1 : public boost::noncopyable +{ + char a; +public: + virtual ~VBase1(){}; +}; + +class VBase2 +{ + int b; +public: + virtual ~VBase2(){}; +}; + +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable : 4511 4512) +#endif + +class VDerived : public VBase1, public VBase2 +{ + long c; +public: + virtual ~VDerived(){}; +}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +// see above + +void test_dynamic_reference_cast_2(){ + VDerived d; + VBase1 &b1 = dynamic_cast<VBase1 &>(d); + VBase2 &b2 = static_cast<VBase2 &>(d); + + VBase1 & vb1 = smart_cast<VBase1 &, VDerived &>(d); + BOOST_CHECK_EQUAL(& b1, & vb1); + BOOST_CHECK_EQUAL(& b2, (& smart_cast<VBase2 &, VDerived &>(d))); + + // downcast + BOOST_CHECK_EQUAL(& d, (& smart_cast<VDerived &, VBase1 &>(b1))); + BOOST_CHECK_EQUAL(& d, (& smart_cast<VDerived &, VBase2 &>(b2))); + + // crosscast + BOOST_CHECK_EQUAL(& b2, (& smart_cast<VBase2 &, VBase1 &>(b1))); + + // explicit cross cast should always work + BOOST_CHECK_EQUAL(& b2, ( + & smart_cast<VBase2 &, VDerived &>( + smart_cast<VDerived &, VBase1 &>(b1) + )) + ); +} + +void test_dynamic_reference_cast_1(){ + VDerived d; + VBase1 &b1 = dynamic_cast<VBase1 &>(d); + VBase2 &b2 = static_cast<VBase2 &>(d); + + VBase1 & vb1 = smart_cast_reference<VBase1 &>(d); + BOOST_CHECK_EQUAL(& b1, & vb1); + BOOST_CHECK_EQUAL(& b2, (& smart_cast_reference<VBase2 &>(d))); + + // downcast + BOOST_CHECK_EQUAL(& d, (& smart_cast_reference<VDerived &>(b1))); + BOOST_CHECK_EQUAL(& d, (& smart_cast_reference<VDerived &>(b2))); + + // crosscast + BOOST_CHECK_EQUAL(& b2, (& smart_cast_reference<VBase2 &>(b1))); + + // explicit cross cast should always work + BOOST_CHECK_EQUAL(& b2, ( + & smart_cast_reference<VBase2 &>( + smart_cast_reference<VDerived &>(b1) + )) + ); +} + +void test_dynamic_pointer_cast(){ + // pointers + VDerived d; + VDerived *pD = & d; + VBase1 *pB1 = pD; + VBase2 *pB2 = pD; + + // upcast + BOOST_CHECK_EQUAL(pB1, smart_cast<VBase1 *>(pD)); + BOOST_CHECK_EQUAL(pB2, smart_cast<VBase2 *>(pD)); + + // downcast + BOOST_CHECK_EQUAL(pD, smart_cast<VDerived *>(pB1)); + BOOST_CHECK_EQUAL(pD, smart_cast<VDerived *>(pB2)); + + // crosscast pointers fails at compiler time + BOOST_CHECK_EQUAL(pB2, smart_cast<VBase2 *>(pB1)); + // though explicit cross cast will always work + BOOST_CHECK_EQUAL(pB2, + smart_cast<VBase2 *>( + smart_cast<VDerived *>(pB1) + ) + ); +} + +int +test_main(int /* argc */, char * /* argv */[]) +{ + test_static_reference_cast_2(); + test_static_reference_cast_1(); + test_static_pointer_cast(); + test_dynamic_reference_cast_2(); + test_dynamic_reference_cast_1(); + test_dynamic_pointer_cast(); + + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_split.cpp b/src/boost/libs/serialization/test/test_split.cpp new file mode 100644 index 000000000..9350272fe --- /dev/null +++ b/src/boost/libs/serialization/test/test_split.cpp @@ -0,0 +1,165 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_split.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/split_member.hpp> +#include <boost/serialization/split_free.hpp> + +class A +{ + friend class boost::serialization::access; + template<class Archive> + void save( + Archive & /* ar */, + const unsigned int /* file_version */ + ) const { + ++(const_cast<A &>(*this).count); + } + template<class Archive> + void load( + Archive & /* ar */, + const unsigned int /* file_version */ + ){ + --count; + } + BOOST_SERIALIZATION_SPLIT_MEMBER() + int count; +public: + A() : count(0) {} + ~A() { + BOOST_CHECK(0 == count); + } +}; + +class B +{ + friend class boost::serialization::access; + template<class Archive> + void save( + Archive & /* ar */, + const unsigned int /* file_version */ + ) const { + ++(const_cast<B &>(*this).count); + } + template<class Archive> + void load( + Archive & /* ar */, + const unsigned int /* file_version */ + ){ + --count; + } + int count; +public: + B() : count(0) {} + ~B() { + BOOST_CHECK(0 == count); + } +}; + +// function specializations must be defined in the appropriate +// namespace - boost::serialization +namespace boost { +namespace serialization { + +template<class Archive> +void serialize( + Archive & ar, + B & b, + const unsigned int file_version +){ + boost::serialization::split_member(ar, b, file_version); +} + +} // serialization +} // namespace boost + +class C +{ +public: + int count; + C() : count(0) {} + ~C() { + BOOST_CHECK(0 == count); + } +}; + +namespace boost { +namespace serialization { + +template<class Archive> +void save( + Archive & /* ar */, + const C & c, + const unsigned int /* file_version */ +){ + ++(const_cast<C &>(c).count); +} + +template<class Archive> +void load( + Archive & /* ar */, + C & c, + const unsigned int /* file_version */ +){ + --c.count; +} + +} // serialization +} // namespace boost + +BOOST_SERIALIZATION_SPLIT_FREE(C) + +void out(const char *testfile, A & a, B & b, C & c) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(a); + oa << BOOST_SERIALIZATION_NVP(b); + oa << BOOST_SERIALIZATION_NVP(c); +} + +void in(const char *testfile, A & a, B & b, C & c) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> BOOST_SERIALIZATION_NVP(a); + ia >> BOOST_SERIALIZATION_NVP(b); + ia >> BOOST_SERIALIZATION_NVP(c); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + A a; + B b; + C c; + + out(testfile, a, b, c); + in(testfile, a, b, c); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_stack.cpp b/src/boost/libs/serialization/test/test_stack.cpp new file mode 100644 index 000000000..4d0ee27bf --- /dev/null +++ b/src/boost/libs/serialization/test/test_stack.cpp @@ -0,0 +1,56 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_stack.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/deque.hpp> +#include <boost/serialization/stack.hpp> + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::stack<A, std::deque<A> > astack, astack1; + astack.push(A()); + astack.push(A()); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("astack",astack); + } + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("astack",astack1); + } + BOOST_CHECK(astack == astack1); + + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_static_warning.cpp b/src/boost/libs/serialization/test/test_static_warning.cpp new file mode 100644 index 000000000..642b9cf3a --- /dev/null +++ b/src/boost/libs/serialization/test/test_static_warning.cpp @@ -0,0 +1,63 @@ +// (C) Copyright Jonathan Turkanis 2004. +// Use, modification and distribution are 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 most recent version including documentation. + +// note: this is a compile only test. + +#include <boost/config.hpp> // BOOST_STATIC_CONST +#include <boost/static_assert.hpp> +#include <boost/type_traits/is_polymorphic.hpp> + +#include <boost/serialization/static_warning.hpp> + +typedef char a1[2]; +typedef char a2[3]; + +class polymorphic { + virtual ~polymorphic(); +}; + +class non_polymorphic { +}; + +template<class T> +int f(){ + BOOST_STATIC_WARNING(T::value); + return 0; +} + +struct A { + BOOST_STATIC_CONSTANT(bool, value = false); +}; + +///////////////////////////////////////////////////////////////////////// +// compilation of this program should show a total of 10 warning messages + +// should show NO warning message +BOOST_STATIC_WARNING(true); + +// the following should show 5 warning message +int x = f<A>(); // Warn +int y = f<boost::is_polymorphic<non_polymorphic> >(); // Warn. +int z = f<boost::is_polymorphic<polymorphic> >(); + +BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); // Warn. +BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); // Warn. +BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); // Warn. +BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn. + +int main(int /* argc */, char * /* argv */[]){ + // should show NO warning message + BOOST_STATIC_WARNING(true); + + // the following should show 5 warning message + f<A>(); + BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); // Warn. + BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); // Warn. + BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); // Warn. + BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn. + return 0; +} diff --git a/src/boost/libs/serialization/test/test_strong_typedef.cpp b/src/boost/libs/serialization/test/test_strong_typedef.cpp new file mode 100644 index 000000000..0dc59c9a4 --- /dev/null +++ b/src/boost/libs/serialization/test/test_strong_typedef.cpp @@ -0,0 +1,71 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_strong_typedef.cpp + +// (C) Copyright 2016 Ashish Sadanandan +// 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) + +// should pass compilation +#include <stdlib.h> // EXIT_SUCCESS + +#include <boost/config.hpp> +#include <boost/serialization/strong_typedef.hpp> +#include <boost/static_assert.hpp> + +#include <boost/type_traits/has_nothrow_assign.hpp> +#include <boost/type_traits/has_nothrow_constructor.hpp> +#include <boost/type_traits/has_nothrow_copy.hpp> + +/////////////////////////////////////////////////////////////////////// +// Define a strong typedef for int. +// The new type should be nothrow constructible and assignable. + +BOOST_STRONG_TYPEDEF(int, strong_int) + +#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR +BOOST_STATIC_ASSERT(boost::has_nothrow_default_constructor<strong_int>::value); +BOOST_STATIC_ASSERT(boost::has_nothrow_copy_constructor<strong_int>::value); +BOOST_STATIC_ASSERT(boost::has_nothrow_assign<strong_int>::value); +#endif + +/////////////////////////////////////////////////////////////////////// +// strong_int can now be placed in another type, which can also be +// nothrow constructible and assignable. + +struct type1 +{ + long some_long; + strong_int sint; +}; + +#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR +BOOST_STATIC_ASSERT(boost::has_nothrow_default_constructor<type1>::value); +BOOST_STATIC_ASSERT(boost::has_nothrow_copy_constructor<type1>::value); +BOOST_STATIC_ASSERT(boost::has_nothrow_assign<type1>::value); +#endif + +/////////////////////////////////////////////////////////////////////// +// Now define a type that throws, and a strong_typedef for it +// The strong_typedef should also not have nothrow construction/assign. + +struct not_noexcept +{ + not_noexcept() {} + not_noexcept(not_noexcept const&) {} + not_noexcept& operator=(not_noexcept const&) {return *this;} + bool operator==(not_noexcept const&) const {return false;} + bool operator<(not_noexcept const&) const {return false;} +}; +BOOST_STRONG_TYPEDEF(not_noexcept, strong_not_noexcept) + +#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR +BOOST_STATIC_ASSERT(! boost::has_nothrow_default_constructor<strong_not_noexcept>::value); +BOOST_STATIC_ASSERT(! boost::has_nothrow_copy_constructor<strong_not_noexcept>::value); +BOOST_STATIC_ASSERT(! boost::has_nothrow_assign<strong_not_noexcept>::value); +#endif + +int main() +{ + return EXIT_SUCCESS; +} diff --git a/src/boost/libs/serialization/test/test_tools.hpp b/src/boost/libs/serialization/test/test_tools.hpp new file mode 100644 index 000000000..09c0c1c30 --- /dev/null +++ b/src/boost/libs/serialization/test/test_tools.hpp @@ -0,0 +1,264 @@ +#ifndef BOOST_SERIALIZATION_TEST_TOOLS_HPP +#define BOOST_SERIALIZATION_TEST_TOOLS_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +#define BOOST_FILESYSTEM_VERSION 3 +#include <boost/filesystem/operations.hpp> // unique_path + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_tools.hpp +// +// (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 <boost/config.hpp> +#ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE + #include <exception> +#endif +#include <boost/detail/no_exceptions_support.hpp> + +#if defined(UNDER_CE) + +// Windows CE does not supply the tmpnam function in its CRT. +// Substitute a primitive implementation here. +namespace boost { +namespace archive { + const char * tmpnam(char * buffer){ + static char ibuffer [512]; + if(NULL == buffer) + buffer = ibuffer; + + static unsigned short index = 0; + std::sprintf(buffer, "\\tmpfile%05X.tmp", index++); + return buffer; + } +} // archive +} // boost + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +// win32 has a brain-dead tmpnam implementation. +// which leaves temp files in root directory +// regardless of environmental settings + +#include <cstdlib> +#include <cstring> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; + using ::strcpy; + using ::strcat; + using ::tmpnam; +} +#endif // defined(BOOST_NO_STDC_NAMESPACE) + +#include <direct.h> +#include <boost/archive/tmpdir.hpp> + +//#if defined(__COMO__) + #define chdir _chdir +//#endif // defined win32 + +#if defined(NDEBUG) && defined(__BORLANDC__) + #define STRCPY strcpy +#else + #define STRCPY std::strcpy +#endif + +namespace boost { +namespace archive { + const char * test_filename(const char * dir = NULL, char *fname = NULL){ + static char ibuffer [512]; + ibuffer[0] = '\0'; + if(NULL == dir){ + dir = boost::archive::tmpdir(); + } + STRCPY(ibuffer, dir); + std::strcat(ibuffer, "/"); + if(NULL == fname){ + char old_dir[256]; + _getcwd(old_dir, sizeof(old_dir) - 1); + chdir(dir); + // (C) Copyright 2010 Dean Michael Berris. <mikhailberis@gmail.com> + // Instead of using std::tmpnam, we use Boost.Filesystem's unique_path + boost::filesystem::path tmp_path = + boost::filesystem::unique_path("%%%%%"); + std::strcat(ibuffer, tmp_path.string().c_str()); + chdir(old_dir); + } + else{ + std::strcat(ibuffer, fname); + } + return ibuffer; + } + const char * tmpnam(char * buffer){ + const char * name = test_filename(NULL, NULL); + if(NULL != buffer){ + STRCPY(buffer, name); + } + return name; + } +} // archive +} // boost + +#else // defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +#if defined(__hpux) +// (C) Copyright 2006 Boris Gubenko. +// HP-UX has a restriction that for multi-thread applications, (i.e. +// the ones compiled -mt) if argument to tmpnam is a NULL pointer, then, +// citing the tmpnam(3S) manpage, "the operation is not performed and a +// NULL pointer is returned". tempnam does not have this restriction, so, +// let's use tempnam instead. + +#define tmpnam(X) tempnam(NULL,X) + +namespace boost { +namespace archive { + using ::tmpnam; +} // archive +} // boost + +#else // defined(__hpux) + +// (C) Copyright 2010 Dean Michael Berris. +// Instead of using the potentially dangrous tempnam function that's part +// of the C standard library, on Unix/Linux we use the more portable and +// "safe" unique_path function provided in the Boost.Filesystem library. + +#include <boost/archive/tmpdir.hpp> + +namespace boost { +namespace archive { + char const * tmpnam(char * buffer) { + static char name[512] = {0}; + if (name[0] == 0) { + boost::filesystem::path tempdir(tmpdir()); + boost::filesystem::path tempfilename = + boost::filesystem::unique_path("serialization-%%%%"); + boost::filesystem::path temp = tempdir / tempfilename; + std::strcat(name, temp.string().c_str()); + } + if (buffer != 0) std::strcpy(buffer, name); + return name; + } +} // archive +} // boost + +#endif // defined(__hpux) +#endif // defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + +#include <boost/core/lightweight_test.hpp> + +#define BOOST_CHECK( P ) \ + BOOST_TEST( (P) ) +#define BOOST_REQUIRE( P ) \ + BOOST_TEST( (P) ) +#define BOOST_CHECK_MESSAGE( P, M ) \ + ((P)? (void)0 : ::boost::detail::error_impl( (M) , __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)) +#define BOOST_REQUIRE_MESSAGE( P, M ) \ + BOOST_CHECK_MESSAGE( (P), (M) ) +#define BOOST_CHECK_EQUAL( A , B ) \ + BOOST_TEST( (A) == (B) ) + +namespace boost { namespace detail { +inline void msg_impl(char const * msg, char const * file, int line, char const * function) +{ + std::cerr << file << "(" << line << "): " << msg << " in function '" << function << "'" << std::endl; +} +} } // boost::detail + +#define BOOST_WARN_MESSAGE( P, M ) \ + ((P)? (void)0 : ::boost::detail::msg_impl( (M) , __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)) +#define BOOST_MESSAGE( M ) \ + BOOST_WARN_MESSAGE( true , (M) ) + +#define BOOST_CHECKPOINT( M ) \ + BOOST_WARN_MESSAGE( true , (M) ) + +//#define BOOST_TEST_DONT_PRINT_LOG_VALUE( T ) + +#define BOOST_FAIL( M ) BOOST_REQUIRE_MESSAGE( false, (M) ) +#define EXIT_SUCCESS 0 + +int test_main(int argc, char * argv[]); + +#include <boost/serialization/singleton.hpp> + +int +main(int argc, char * argv[]){ + boost::serialization::get_singleton_module().lock(); + + int retval = 1; + BOOST_TRY{ + retval = test_main(argc, argv); + } + #ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE + BOOST_CATCH(const std::exception & e){ + BOOST_ERROR(e.what()); + } + #endif + BOOST_CATCH(...){ + BOOST_ERROR("failed with uncaught exception:"); + } + BOOST_CATCH_END + + boost::serialization::get_singleton_module().unlock(); + + int error_count = boost::report_errors(); + if(error_count > 0) + retval = error_count; + return retval; +} + +// the following is to ensure that when one of the libraries changes +// BJAM rebuilds and relinks the test. +/* +#include "text_archive.hpp" +#include "text_warchive.hpp" +#include "binary_archive.hpp" +#include "xml_archive.hpp" +#include "xml_warchive.hpp" + +#include "polymorphic_text_archive.hpp" +#include "polymorphic_text_warchive.hpp" +#include "polymorphic_binary_archive.hpp" +#include "polymorphic_xml_archive.hpp" +#include "polymorphic_xml_warchive.hpp" +*/ + +///////////////////////////////////////////// +// invoke header for a custom archive test. + +///////////////////////////////////////////// +// invoke header for a custom archive test. +#if ! defined(BOOST_ARCHIVE_TEST) +#define BOOST_ARCHIVE_TEST text_archive.hpp +#endif + +#include <boost/preprocessor/stringize.hpp> +#include BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST) + +#ifndef TEST_STREAM_FLAGS + #define TEST_STREAM_FLAGS (std::ios_base::openmode)0 +#endif + +#ifndef TEST_ARCHIVE_FLAGS + #define TEST_ARCHIVE_FLAGS 0 +#endif + +#ifndef TEST_DIRECTORY +#define TEST_DIRECTORY +#else +#define __x__ TEST_DIRECTORY +#undef TEST_DIRECTORY +#define TEST_DIRECTORY BOOST_PP_STRINGIZE(__x__) +#endif + +#endif // BOOST_SERIALIZATION_TEST_TOOLS_HPP diff --git a/src/boost/libs/serialization/test/test_tracking.cpp b/src/boost/libs/serialization/test/test_tracking.cpp new file mode 100644 index 000000000..24e6f0099 --- /dev/null +++ b/src/boost/libs/serialization/test/test_tracking.cpp @@ -0,0 +1,130 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_tracking_save.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <boost/config.hpp> +#include <cstdio> // remove +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/nvp.hpp> + +#define TEST_CLASS(N, TRACKING) \ +class N \ +{ \ + friend class boost::serialization::access; \ + template<class Archive> \ + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ \ + ++count; \ + } \ +public: \ + static unsigned int count; \ +}; \ +unsigned int N::count = 0;\ +BOOST_CLASS_TRACKING(N, TRACKING) + +TEST_CLASS(AN, ::boost::serialization::track_never) +TEST_CLASS(AS, ::boost::serialization::track_selectively) +TEST_CLASS(AA, ::boost::serialization::track_always) + +// test pointers +TEST_CLASS(PAN, ::boost::serialization::track_never) +TEST_CLASS(PAS, ::boost::serialization::track_selectively) +TEST_CLASS(PAA, ::boost::serialization::track_always) + +void out(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + // write object twice to check tracking + AN an; + AS as; + AA aa; + oa << BOOST_SERIALIZATION_NVP(an) << BOOST_SERIALIZATION_NVP(an); + BOOST_CHECK(an.count == 2); + oa << BOOST_SERIALIZATION_NVP(as) << BOOST_SERIALIZATION_NVP(as); + BOOST_CHECK(as.count == 2); + oa << BOOST_SERIALIZATION_NVP(aa) << BOOST_SERIALIZATION_NVP(aa); + BOOST_CHECK(aa.count == 1); + + PAN *pan = new PAN; + PAS *pas = new PAS; + PAA *paa = new PAA; + oa << BOOST_SERIALIZATION_NVP(pan) << BOOST_SERIALIZATION_NVP(pan); + BOOST_CHECK(pan->count == 2); + oa << BOOST_SERIALIZATION_NVP(pas) << BOOST_SERIALIZATION_NVP(pas); + BOOST_CHECK(pas->count == 1); + oa << BOOST_SERIALIZATION_NVP(paa) << BOOST_SERIALIZATION_NVP(paa); + BOOST_CHECK(paa->count == 1); + delete pan; + delete pas; + delete paa; +} + +void in(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + // read object twice to check tracking + AN an; + AS as; + AA aa; + + AN::count = 0; + AS::count = 0; + AA::count = 0; + + ia >> BOOST_SERIALIZATION_NVP(an) >> BOOST_SERIALIZATION_NVP(an); + BOOST_CHECK(an.count == 2); + ia >> BOOST_SERIALIZATION_NVP(as) >> BOOST_SERIALIZATION_NVP(as); + BOOST_CHECK(as.count == 2); + ia >> BOOST_SERIALIZATION_NVP(aa) >> BOOST_SERIALIZATION_NVP(aa); + BOOST_CHECK(aa.count == 1); + + PAN::count = 0; + PAS::count = 0; + PAA::count = 0; + + PAN *pan = NULL; + PAS *pas = NULL; + PAA *paa = NULL; + ia >> BOOST_SERIALIZATION_NVP(pan); + ia >> BOOST_SERIALIZATION_NVP(pan); + BOOST_CHECK(pan->count == 2); + ia >> BOOST_SERIALIZATION_NVP(pas); + ia >> BOOST_SERIALIZATION_NVP(pas); + BOOST_CHECK(pas->count == 1); + ia >> BOOST_SERIALIZATION_NVP(paa); + ia >> BOOST_SERIALIZATION_NVP(paa); + BOOST_CHECK(paa->count == 1); + delete pan; + delete pas; + delete paa; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + out(testfile); + in(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + diff --git a/src/boost/libs/serialization/test/test_traits_fail.cpp b/src/boost/libs/serialization/test/test_traits_fail.cpp new file mode 100644 index 000000000..6816528bb --- /dev/null +++ b/src/boost/libs/serialization/test/test_traits_fail.cpp @@ -0,0 +1,40 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_traits_fail.cpp: test implementation level trait + +// (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) + +// compile test for traits +#include "test_tools.hpp" +#include <boost/serialization/level.hpp> +#include <boost/serialization/version.hpp> + +class A +{ +}; + +BOOST_CLASS_IMPLEMENTATION(A, boost::serialization::not_serializable) +// It can make no sense to assign a version number to a class that +// is not serialized with class information +BOOST_CLASS_VERSION(A, 2) // should fail during compile +// It can make no sense to assign tracking behavior to a class that +// is not serializable. Should fail during compile. +BOOST_CLASS_TRACKING(A, boost::serialization::track_never) + +class B +{ +}; + +BOOST_CLASS_IMPLEMENTATION(B, boost::serialization::object_class_info) +BOOST_CLASS_VERSION(B, 2) +BOOST_CLASS_TRACKING(B, boost::serialization::track_always) + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_traits_pass.cpp b/src/boost/libs/serialization/test/test_traits_pass.cpp new file mode 100644 index 000000000..d4a16e9e1 --- /dev/null +++ b/src/boost/libs/serialization/test/test_traits_pass.cpp @@ -0,0 +1,30 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_traits_pass.cpp: test implementation level trait + +// (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) + +// compile test for traits +#include "test_tools.hpp" + +#include <boost/serialization/level.hpp> +#include <boost/serialization/tracking.hpp> +#include <boost/serialization/version.hpp> + +class B +{ +}; + +BOOST_CLASS_IMPLEMENTATION(B, boost::serialization::object_class_info) +BOOST_CLASS_VERSION(B, 2) +BOOST_CLASS_TRACKING(B, boost::serialization::track_always) + +int +test_main( int argc, char* argv[] ) +{ + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_unique_ptr.cpp b/src/boost/libs/serialization/test/test_unique_ptr.cpp new file mode 100644 index 000000000..c465ea3c2 --- /dev/null +++ b/src/boost/libs/serialization/test/test_unique_ptr.cpp @@ -0,0 +1,70 @@ +/////////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 diff --git a/src/boost/libs/serialization/test/test_unregistered.cpp b/src/boost/libs/serialization/test/test_unregistered.cpp new file mode 100644 index 000000000..c7de75eeb --- /dev/null +++ b/src/boost/libs/serialization/test/test_unregistered.cpp @@ -0,0 +1,313 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_unregistered.cpp + +// (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) + +// should pass compilation and execution + +#include <fstream> + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <cstring> // strcmp +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/archive/archive_exception.hpp> +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/type_info_implementation.hpp> +#include <boost/core/no_exceptions_support.hpp> + +class polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive & /* ar */, const unsigned int /* file_version */){ + } +public: + virtual ~polymorphic_base(){}; +}; + +class polymorphic_derived1 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +}; + +class polymorphic_derived2 : public polymorphic_base +{ + friend class boost::serialization::access; + template<class Archive> + void serialize(Archive &ar, const unsigned int /* file_version */){ + ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base); + } +}; + +struct type1 { + template<typename Archive> + void serialize(Archive&, unsigned int ver) { + BOOST_CHECK(ver == 1); + } +}; +struct type2 { + template<typename Archive> + void serialize(Archive&, unsigned int ver) { + BOOST_CHECK(ver == 2); + } +}; + +BOOST_CLASS_VERSION(type1, 1); +BOOST_CLASS_VERSION(type2, 2); + +// save unregistered polymorphic classes +void save_unregistered1(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = new polymorphic_derived1; + + // registration IS necessary when serializing a polymorphic class + // through pointer to the base class + bool except = false; + BOOST_TRY { + oa << BOOST_SERIALIZATION_NVP(rb1); + } + BOOST_CATCH(boost::archive::archive_exception const& aex){ + except = true; + } + BOOST_CATCH_END + BOOST_CHECK_MESSAGE(except, "lack of registration not detected !"); + + delete rb1; +} + +// note: the corresponding save function above will not result in +// valid archive - hence, the following code which attempts to load +// and archive will fail. Leave this as a reminder not to do this +#if 0 +// load unregistered polymorphic classes +void load_unregistered1(const char *testfile) +{ + std::ifstream is(testfile); + boost::archive::iarchive ia(is); + + polymorphic_base *rb1(NULL); + + // registration IS necessary when serializing a polymorphic class + // through pointer to the base class + bool except = false; + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(rb1); + } + BOOST_CATCH(boost::archive::archive_exception const& aex){ + except = true; + BOOST_CHECK_MESSAGE( + NULL == rb1, + "failed load resulted in a non-null pointer" + ); + } + BOOST_CATCH_END + BOOST_CHECK_MESSAGE(except, "lack of registration not detected !"); + + delete rb1; +} +#endif + +// save unregistered polymorphic classes +void save_unregistered2(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_derived1 *rd1 = new polymorphic_derived1; + + // registration is NOT necessary when serializing a polymorphic class + // through pointer to a derived class + bool except = false; + BOOST_TRY { + oa << BOOST_SERIALIZATION_NVP(rd1); + } + BOOST_CATCH(boost::archive::archive_exception const& aex){ + except = true; + } + BOOST_CATCH_END + BOOST_CHECK_MESSAGE(! except, "registration not detected !"); + + delete rd1; +} + +// note: the corresponding save function above will not result in +// valid archive - hence, the following code which attempts to load +// and archive will fail. Leave this as a reminder not to do this +// load unregistered polymorphic classes +void load_unregistered2(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_derived1 *rd1 = NULL; + + // registration is NOT necessary when serializing a polymorphic class + // or through pointer to a derived class + bool except = false; + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(rd1); + } + BOOST_CATCH(boost::archive::archive_exception const& aex){ + except = true; + BOOST_CHECK_MESSAGE( + NULL == rd1, + "failed load resulted in a non-null pointer" + ); + } + BOOST_CATCH_END + BOOST_CHECK_MESSAGE(! except, "registration not detected !"); + + delete rd1; +} + +// save registered polymorphic class +void save_registered(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = new polymorphic_derived1; + polymorphic_base *rb2 = new polymorphic_derived2; + + // registration (forward declaration) will permit correct serialization + // through a pointer to a base class + oa.register_type(static_cast<polymorphic_derived1 *>(NULL)); + oa.register_type(static_cast<polymorphic_derived2 *>(NULL)); + oa << BOOST_SERIALIZATION_NVP(rb1); + oa << BOOST_SERIALIZATION_NVP(rb2); + + delete rb1; + delete rb2; +} + +// load registered polymorphic class +void load_registered(const char *testfile) +{ + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + + polymorphic_base *rb1 = NULL; + polymorphic_base *rb2 = NULL; + + // registration (forward declaration) will permit correct serialization + // through a pointer to a base class + ia.register_type(static_cast<polymorphic_derived1 *>(NULL)); + ia.register_type(static_cast<polymorphic_derived2 *>(NULL)); + + ia >> BOOST_SERIALIZATION_NVP(rb1); + + BOOST_CHECK_MESSAGE(NULL != rb1, "Load resulted in NULL pointer"); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived1 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_base + >::type::get_const_instance().get_derived_extended_type_info(*rb1), + "restored pointer b1 not of correct type" + ); + + ia >> BOOST_SERIALIZATION_NVP(rb2); + BOOST_CHECK_MESSAGE(NULL != rb2, "Load resulted in NULL pointer"); + BOOST_CHECK_MESSAGE( + boost::serialization::type_info_implementation< + polymorphic_derived2 + >::type::get_const_instance() + == + * boost::serialization::type_info_implementation< + polymorphic_base + >::type::get_const_instance().get_derived_extended_type_info(*rb2), + "restored pointer b2 not of correct type" + ); + + delete rb1; + delete rb2; +} + +// store a pointer from slot0 +void save_unregistered_pointer(const char *testfile) +{ + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + + oa.register_type(static_cast<type2 *>(NULL)); + + type1 instance1; + type2 *pointer2 = new type2; + + BOOST_TRY { + oa & BOOST_SERIALIZATION_NVP(instance1) & BOOST_SERIALIZATION_NVP(pointer2); + } + BOOST_CATCH(...) { + BOOST_CHECK_MESSAGE(false, "unexpected exception"); + } + BOOST_CATCH_END + + delete pointer2; +} + +// load a pointer from slot0 which has no pointer serializer +void load_unregistered_pointer(const char *testfile) +{ + test_istream is(testfile); + test_iarchive ia(is); + + type1 instance1; + type2 *pointer2(NULL); + + bool except = false; + BOOST_TRY { + ia & BOOST_SERIALIZATION_NVP(instance1) & BOOST_SERIALIZATION_NVP(pointer2); + } + BOOST_CATCH(boost::archive::archive_exception const& aex){ + except = true; + BOOST_CHECK_MESSAGE( + std::strcmp(aex.what(), "unregistered class") == 0, + "incorrect exception" + ); + } + BOOST_CATCH_END + BOOST_CHECK_MESSAGE(except, "lack of registration not detected !"); + BOOST_CHECK_MESSAGE(NULL == pointer2, "expected failed load"); + + delete pointer2; +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + save_unregistered1(testfile); +// load_unregistered1(testfile); + save_unregistered2(testfile); + load_unregistered2(testfile); + save_registered(testfile); + load_registered(testfile); + save_unregistered_pointer(testfile); + load_unregistered_pointer(testfile); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_valarray.cpp b/src/boost/libs/serialization/test/test_valarray.cpp new file mode 100644 index 000000000..84d5c30dd --- /dev/null +++ b/src/boost/libs/serialization/test/test_valarray.cpp @@ -0,0 +1,56 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_valarrray.cpp + +// (C) Copyright 2005 Matthias Troyer . +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include "test_tools.hpp" + +#include <boost/serialization/valarray.hpp> + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + std::valarray<int> avalarray(2); + avalarray[0] = 42; + avalarray[1] = -42; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("avalarray", avalarray); + } + std::valarray<int> avalarray1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("avalarray", avalarray1); + } + bool equal = ( avalarray.size() == avalarray1.size() + && avalarray[0] == avalarray1[0] + && avalarray[1] == avalarray1[1] + ); + + BOOST_CHECK(equal); + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_variant.cpp b/src/boost/libs/serialization/test/test_variant.cpp new file mode 100644 index 000000000..dcf91d13c --- /dev/null +++ b/src/boost/libs/serialization/test/test_variant.cpp @@ -0,0 +1,299 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_variant.cpp +// test of non-intrusive serialization of variant types +// +// copyright (c) 2005 +// troy d. straszheim <troy@resophonic.com> +// http://www.resophonic.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. +// +// thanks to Robert Ramey and Peter Dimov. +// + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> +#include <boost/config.hpp> +#include <boost/math/special_functions/next.hpp> // float_distance +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/type_traits/is_same.hpp> +#include <boost/mpl/eval_if.hpp> +#include <boost/mpl/identity.hpp> +#include <boost/serialization/throw_exception.hpp> + +#if defined(_MSC_VER) && (_MSC_VER <= 1020) +# pragma warning (disable : 4786) // too long name, harmless warning +#endif + +#include "test_tools.hpp" + +#include <boost/archive/archive_exception.hpp> + +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/variant.hpp> + +#include "A.hpp" +#include "A.ipp" + +class are_equal + : public boost::static_visitor<bool> +{ +public: + // note extra rigamorole for compilers which don't support + // partial function template ordering - specfically msvc 6.x + struct same { + template<class T, class U> + static bool invoke(const T & t, const U & u){ + return t == u; + } + }; + + struct not_same { + template<class T, class U> + static bool invoke(const T &, const U &){ + return false; + } + }; + + template <class T, class U> + bool operator()( const T & t, const U & u) const + { + typedef typename boost::mpl::eval_if<boost::is_same<T, U>, + boost::mpl::identity<same>, + boost::mpl::identity<not_same> + >::type type; + return type::invoke(t, u); + } + + bool operator()( const float & lhs, const float & rhs ) const + { + return std::abs( boost::math::float_distance(lhs, rhs)) < 2; + } + bool operator()( const double & lhs, const double & rhs ) const + { + return std::abs( boost::math::float_distance(lhs, rhs)) < 2; + } +}; + +template <class T> +void test_type(const T& gets_written){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(testfile != NULL); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("written", gets_written); + } + + T got_read; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("written", got_read); + } + BOOST_CHECK(boost::apply_visitor(are_equal(), gets_written, got_read)); + + std::remove(testfile); +} + +// this verifies that if you try to read in a variant from a file +// whose "which" is illegal for the one in memory (that is, you're +// reading in to a different variant than you wrote out to) the load() +// operation will throw. One could concievably add checking for +// sequence length as well, but this would add size to the archive for +// dubious benefit. +// +void do_bad_read() +{ + // Compiling this test invokes and ICE on msvc 6 + // So, we'll just to skip it for this compiler + #if defined(_MSC_VER) && (_MSC_VER <= 1020) + boost::variant<bool, float, int, std::string> big_variant; + big_variant = std::string("adrenochrome"); + + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(testfile != NULL); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << BOOST_SERIALIZATION_NVP(big_variant); + } + boost::variant<bool, float, int> little_variant; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + bool exception_invoked = false; + BOOST_TRY { + ia >> BOOST_SERIALIZATION_NVP(little_variant); + } BOOST_CATCH (boost::archive::archive_exception const& e) { + BOOST_CHECK(boost::archive::archive_exception::unsupported_version == e.code); + exception_invoked = true; + } + BOOST_CATCH_END + BOOST_CHECK(exception_invoked); + } + #endif +} + +struct H { + int i; +}; + +namespace boost { +namespace serialization { + +template<class Archive> +void serialize(Archive &ar, H & h, const unsigned int /*file_version*/){ + ar & boost::serialization::make_nvp("h", h.i); +} + +} // namespace serialization +} // namespace boost + +inline bool operator==(H const & lhs, H const & rhs) { + return lhs.i == rhs.i; +} + +inline bool operator!=(H const & lhs, H const & rhs) { + return !(lhs == rhs); +} + +inline bool operator<(H const & lhs, H const & rhs) { + return lhs.i < rhs.i; +} + +inline std::size_t hash_value(H const & val) { + return val.i; +} + +void test_pointer(){ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(testfile != NULL); + typedef boost::variant<H, int> variant_t; + H const h = {5}; + variant_t v(h); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("written", v); + const H * h_ptr = & boost::strict_get<H const &>(v); + oa << boost::serialization::make_nvp("written", h_ptr); + } + variant_t v2; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("written", v2); + H * h2_ptr; + ia >> boost::serialization::make_nvp("written", h2_ptr); + BOOST_CHECK_EQUAL(h, boost::strict_get<H const>(v2)); + BOOST_CHECK_EQUAL(h2_ptr, & boost::strict_get<H const &>(v2)); + } + BOOST_CHECK_EQUAL(v, v2); +} + +#include <boost/serialization/map.hpp> +#include <boost/serialization/set.hpp> + +// test a pointer to an object contained into a variant that is an +// element of a set +void test_variant_set() +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(testfile != NULL); + typedef boost::variant<H, int> variant_t; + typedef std::set<variant_t> uset_t; + uset_t set; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + H const h = {5}; + variant_t v(h); + set.insert(v); + oa << boost::serialization::make_nvp("written", set); + H const * const h_ptr = boost::strict_get<H const>(&(*set.begin())); + oa << boost::serialization::make_nvp("written", h_ptr); + } + uset_t set2; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("written", set2); + H * h_ptr; + ia >> boost::serialization::make_nvp("written", h_ptr); + const H * h_ptr2 = & boost::strict_get<H const>(*set2.begin()); + BOOST_CHECK_EQUAL(h_ptr, h_ptr2); + } + BOOST_CHECK_EQUAL(set, set2); +} + +// test a pointer to an object contained into a variant that is an +// element of a map +void test_variant_map() +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(testfile != NULL); + typedef boost::variant<H, int> variant_t; + typedef std::map<int, variant_t> map_t; + map_t map; + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + H const h = {5}; + variant_t v(h); + map[0] = v; + BOOST_ASSERT(1 == map.size()); + oa << boost::serialization::make_nvp("written", map); + H const * const h_ptr = boost::strict_get<H const>(&map[0]); + BOOST_CHECK_EQUAL(h_ptr, boost::strict_get<H const>(&map[0])); + oa << boost::serialization::make_nvp("written", h_ptr); + } + map_t map2; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("written", map2); + BOOST_ASSERT(1 == map2.size()); + H * h_ptr; + ia >> boost::serialization::make_nvp("written", h_ptr); + H const * const h_ptr2 = boost::strict_get<H const>(&map2[0]); + BOOST_CHECK_EQUAL(h_ptr, h_ptr2); + } + BOOST_CHECK_EQUAL(map, map2); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + { + boost::variant<bool, int, float, double, A, std::string> v; + v = false; + test_type(v); + v = 1; + test_type(v); + v = (float) 2.3; + test_type(v); + v = (double) 6.4; + test_type(v); + v = std::string("we can't stop here, this is Bat Country"); + test_type(v); + v = A(); + test_type(v); + } + test_pointer(); + test_variant_set(); + test_variant_map(); + do_bad_read(); + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_vector.cpp b/src/boost/libs/serialization/test/test_vector.cpp new file mode 100644 index 000000000..1064c92e4 --- /dev/null +++ b/src/boost/libs/serialization/test/test_vector.cpp @@ -0,0 +1,128 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_vector.cpp + +// (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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <fstream> + +#include <cstdio> // remove +#include <boost/config.hpp> +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif +#include <boost/static_assert.hpp> +#include "test_tools.hpp" + +#include <boost/serialization/vector.hpp> + +// normal class with default constructor +#include "A.hpp" +#include "A.ipp" + +template <class T> +int test_vector_detail(const std::vector<T> & avector) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + // test array of objects + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + oa << boost::serialization::make_nvp("avector", avector); + } + std::vector< T > avector1; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("avector", avector1); + } + BOOST_CHECK(avector == avector1); + std::remove(testfile); + return EXIT_SUCCESS; +} + +template <class T> +int test_default_constructible() +{ + // test array of objects + std::vector<T> avector; + avector.push_back(T()); + avector.push_back(T()); + return test_vector_detail(avector); +} + +// class without default constructor +struct X { + //BOOST_DELETED_FUNCTION(X()); +public: + int m_i; + X(const X & x) : + m_i(x.m_i) + {} + X(const int & i) : + m_i(i) + {} + bool operator==(const X & rhs) const { + return m_i == rhs.m_i; + } + template<class Archive> + void serialize(Archive & ar, const unsigned int /*version*/){ + ar & BOOST_SERIALIZATION_NVP(m_i); + } +}; + +template<class Archive> +inline void save_construct_data( + Archive & ar, + const X * x, + const unsigned int /* file_version */ +){ + // variable used for construction + ar << boost::serialization::make_nvp("i", x->m_i); +} + +template<class Archive> +inline void load_construct_data( + Archive & ar, + X * x, + const unsigned int /* file_version */ +){ + int i; + ar >> boost::serialization::make_nvp("i", i); + ::new(x)X(i); +} + +int test_non_default_constructible() +{ + // test array of objects + std::vector<X> avector; + avector.push_back(X(123)); + avector.push_back(X(456)); + return test_vector_detail(avector); +} + +int test_main( int /* argc */, char* /* argv */[] ) +{ + int res; + res = test_default_constructible<A>(); + // test an int vector for which optimized versions should be available + if (res == EXIT_SUCCESS) + res = test_default_constructible<int>(); + // test a bool vector + if (res == EXIT_SUCCESS) + res = test_default_constructible<bool>(); + if (res == EXIT_SUCCESS) + res = test_non_default_constructible(); + return res; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_void_cast.cpp b/src/boost/libs/serialization/test/test_void_cast.cpp new file mode 100644 index 000000000..1538ab2b0 --- /dev/null +++ b/src/boost/libs/serialization/test/test_void_cast.cpp @@ -0,0 +1,165 @@ +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_void_cast.cpp: test implementation of run-time casting of void pointers + +// (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) +// <gennadiy.rozental@tfn.com> + +#include <cstddef> // NULL +#include "test_tools.hpp" +#include <boost/serialization/extended_type_info_typeid.hpp> +#include <boost/serialization/void_cast.hpp> +#include <boost/serialization/singleton.hpp> + +class Base1 +{ + char a; +}; + +class Base2 +{ + int b; +}; + +class Derived : public Base1, public Base2 +{ + long c; +}; + +class MostDerived : public Derived +{ + char d[32]; +}; + +template<class T> +const boost::serialization::extended_type_info & eti(){ + return boost::serialization::singleton< + boost::serialization::extended_type_info_typeid< T > + >::get_const_instance(); +} + +int +test_main( int /* argc */, char* /* argv */[] ) +{ + MostDerived md; + MostDerived* pmd =& md; + Derived* pd = static_cast<Derived*>(pmd); + + Base2* pb2 = static_cast<Base2*>(pmd); + Base1* pb1 = static_cast<Base1*>(pd); + + void* vpmd = static_cast<void*>(pmd); + void* vpb1 = static_cast<void*>(pb1); + void* vpb2 = static_cast<void*>(pb2); + void* vpd = static_cast<void*>(pd); + + // simple casts only requiring table lookup + BOOST_CHECK(vpd == boost::serialization::void_downcast( + eti<Derived>(), + eti<Base1>(), + vpb1 + )); + BOOST_CHECK(vpb1 == boost::serialization::void_upcast( + eti<Derived>(), + eti<Base1>(), + vpd + )); + BOOST_CHECK(vpd == boost::serialization::void_downcast( + eti<Derived>(), + eti<Base2>(), + vpb2 + )); + BOOST_CHECK(vpb2 == boost::serialization::void_upcast( + eti<Derived>(), + eti<Base2>(), + vpd + )); + BOOST_CHECK(vpmd == boost::serialization::void_downcast( + eti<MostDerived>(), + eti<Derived>(), + vpd + )); + BOOST_CHECK(vpd == boost::serialization::void_upcast( + eti<MostDerived>(), + eti<Derived>(), + vpmd + )); + // note relationship between MostDerived and Base1 is automatically derived + BOOST_CHECK(vpmd == boost::serialization::void_downcast( + eti<MostDerived>(), + eti<Base1>(), + vpb1 + )); + BOOST_CHECK(vpb1 == boost::serialization::void_upcast( + eti<MostDerived>(), + eti<Base1>(), + vpmd + )); + + // note relationship between MostDerived and Base2 is automatically derived + BOOST_CHECK(vpmd == boost::serialization::void_downcast( + eti<MostDerived>(), + eti<Base2>(), + vpb2 + )); + BOOST_CHECK(vpb2 == boost::serialization::void_upcast( + eti<MostDerived>(), + eti<Base2>(), + vpmd + )); + + // note: currently derivations are not optimised. See void_cast.cpp + // for and explanation. These should still work though. + + // need to double check to validate speed up optimization of derivations + BOOST_CHECK(vpmd == boost::serialization::void_downcast( + eti<MostDerived>(), + eti<Base1>(), + vpb1 + )); + BOOST_CHECK(vpb1 == boost::serialization::void_upcast( + eti<MostDerived>(), + eti<Base1>(), + vpmd + )); + BOOST_CHECK(vpmd == boost::serialization::void_downcast( + eti<MostDerived>(), + eti<Base2>(), + vpb2 + )); + BOOST_CHECK(vpb2 == boost::serialization::void_upcast( + eti<MostDerived>(), + eti<Base2>(), + vpmd + )); + + // check things that should fail + BOOST_CHECK(NULL == boost::serialization::void_downcast( + eti<Base2>(), + eti<Base1>(), + vpb1 + )); + + // note that a fundamental feature is that derived/base pairs are created + // at compiler time so that all are registered before the main program starts + // so leave the registration here at the end to verify this. Note bogus arguments + // to workaround msvc 6 bug + boost::serialization::void_cast_register<Derived, Base1>( + static_cast<Derived *>(NULL), + static_cast<Base1 *>(NULL) + ); + boost::serialization::void_cast_register<Derived, Base2>( + static_cast<Derived *>(NULL), + static_cast<Base2 *>(NULL) + ); + boost::serialization::void_cast_register<MostDerived, Derived>( + static_cast<MostDerived *>(NULL), + static_cast<Derived *>(NULL) + ); + + return EXIT_SUCCESS; +} + +// EOF diff --git a/src/boost/libs/serialization/test/test_z.cpp b/src/boost/libs/serialization/test/test_z.cpp new file mode 100644 index 000000000..6023aab24 --- /dev/null +++ b/src/boost/libs/serialization/test/test_z.cpp @@ -0,0 +1,779 @@ +#if 0 +#include <stdexcept> +#include <iostream> +#include <sstream> + +#include <boost/optional.hpp> +#include <boost/archive/text_oarchive.hpp> +#include <boost/archive/text_iarchive.hpp> +#include <boost/serialization/optional.hpp> + +struct Foo +{ + Foo(int aBar) : + mBar(aBar) + { + if (mBar > 10) + { + throw std::logic_error("too big bar"); + } + } + int bar() const + { + return mBar; + } + bool operator==(const Foo & rhs) const { + return mBar == rhs.mBar; + } +private: + int mBar; +}; + +namespace boost { +namespace serialization { + +template<class Archive> +inline void serialize(Archive & ar, Foo& foo, const unsigned int /*version*/) +{ + std::cout << __FUNCTION__ << " called" << std::endl; +} + +template<class Archive> +inline void save_construct_data(Archive & ar, const Foo* foo, const unsigned int /*version*/) +{ + std::cout << __FUNCTION__ << " called" << std::endl; + ar & foo->bar(); +} + +template<class Archive> +inline void load_construct_data(Archive & ar, Foo* foo, const unsigned int /*version*/) +{ + std::cout << __FUNCTION__ << " called" << std::endl; + int bar; + ar & bar; + ::new(foo) Foo(bar); +} + +} // serialization +} // boost + + +int main() +{ + boost::optional<Foo> oldFoo = Foo(10); + std::ostringstream outStream; + boost::archive::text_oarchive outArchive(outStream); + outArchive & oldFoo; + + boost::optional<Foo> newFoo; + std::istringstream inStream(outStream.str()); + boost::archive::text_iarchive inArchive(inStream); + inArchive & newFoo; + + return !(newFoo == oldFoo); +} + +#elif 0 +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// test_optional.cpp + +// (C) Copyright 2004 Pavel Vozenilek +// 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) + +// should pass compilation and execution + +#include <cstddef> // NULL +#include <cstdio> // remove +#include <fstream> + +#include <boost/config.hpp> + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std{ + using ::remove; +} +#endif + +#include <boost/archive/archive_exception.hpp> + +#define BOOST_ARCHIVE_TEST xml_archive.hpp + +#include "test_tools.hpp" + +#include <boost/serialization/optional.hpp> + +#include "A.hpp" +#include "A.ipp" + +int test_main( int /* argc */, char* /* argv */[] ) +{ + const char * testfile = boost::archive::tmpnam(NULL); + BOOST_REQUIRE(NULL != testfile); + + const boost::optional<int> aoptional1; + const boost::optional<int> aoptional2(123); + { + test_ostream os(testfile, TEST_STREAM_FLAGS); + test_oarchive oa(os, TEST_ARCHIVE_FLAGS); + //oa << boost::serialization::make_nvp("aoptional1",aoptional1); + //oa << boost::serialization::make_nvp("aoptional2",aoptional2); + } + /* + boost::optional<int> aoptional1a(999); + boost::optional<int> aoptional2a; + { + test_istream is(testfile, TEST_STREAM_FLAGS); + test_iarchive ia(is, TEST_ARCHIVE_FLAGS); + ia >> boost::serialization::make_nvp("aoptional1",aoptional1a); + ia >> boost::serialization::make_nvp("aoptional2",aoptional2a); + } + BOOST_CHECK(aoptional1 == aoptional1a); + BOOST_CHECK(aoptional2 == aoptional2a); + */ + std::remove(testfile); + return EXIT_SUCCESS; +} + +// EOF + +#elif 0 + +#include <fstream> + +#include <boost/archive/xml_woarchive.hpp> +#include <boost/archive/xml_wiarchive.hpp> +#include <boost/serialization/string.hpp> + +#include "test_tools.hpp" + +int test_main(int, char *argv[]) +{ + const char * testfile = boost::archive::tmpnam(NULL); + std::string s1 = "kkkabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; + std::wstring w1 = L"kkk"; + std::wstring w2 = L"апр"; // some non-latin (for example russians) letters + { + std::wofstream ofs(testfile); + { + boost::archive::xml_woarchive oa(ofs); + oa << boost::serialization::make_nvp("key1", s1); + //oa << boost::serialization::make_nvp("key2", w1); + //oa << boost::serialization::make_nvp("key3", w2); // here exception is thrown + } + } + std::string new_s1; + //std::wstring new_w1; + //std::wstring new_w2; + { + std::wifstream ifs(testfile); + { + boost::archive::xml_wiarchive ia(ifs); + ia >> boost::serialization::make_nvp("key1", new_s1); + //ia >> boost::serialization::make_nvp("key2", new_w1); + //ia >> boost::serialization::make_nvp("key3", new_w2); // here exception is thrown + } + } + BOOST_CHECK(s1 == new_s1); + //BOOST_CHECK(w1 == new_w1); + //BOOST_CHECK(w2 == new_w2); + return 0; +} + +#elif 0 + +#include <boost/archive/xml_oarchive.hpp> +#include <boost/serialization/nvp.hpp> + +#include <iostream> + +int main() { + boost::archive::xml_oarchive oa( std::cerr ); + int bob = 3; + oa << boost::serialization::make_nvp( "bob", bob ); +} + +#elif 0 + +#include <fstream> +#include <vector> +#include <iostream> + +//#include <boost/shared_ptr.hpp> +#include <boost/archive/binary_iarchive.hpp> +#include <boost/serialization/nvp.hpp> +#include <boost/serialization/shared_ptr.hpp> +#include <boost/serialization/vector.hpp> + +struct boxed_int +{ + boxed_int() : i(0) {} + boxed_int(int i) : i(i) {} + int i; + template<class Archive> + void serialize(Archive &ar, unsigned version) + { + ar & BOOST_SERIALIZATION_NVP(i); + } +}; +typedef boost::shared_ptr<boxed_int> pi; + +void go(std::istream &is) { + std::vector<pi> vv; + try + { + boost::archive::binary_iarchive ia(is); + ia & vv; + } + catch(std::exception &e) {} +} + +int main(int argc, char **argv) { + if(argc > 1) { + std::ifstream is(argv[1]); + go(is); + } else { + go(std::cin); + } + + return 0; +} + +#elif 0 + +#include <cassert> +#include <string> + +#include <boost/archive/iterators/base64_from_binary.hpp> +#include <boost/archive/iterators/transform_width.hpp> + +namespace bai = boost::archive::iterators; +int main() +{ + std::string input = + "A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were " + "three gardeners at it, busily painting them red. Alice thought this a very curious thing, and she went nearer " + "to watch them, and just as she came up to them she heard one of them say, 'Look out now, Five! Don't go " + "splashing paint over me like that!''I couldn't help it,' said Five, in a sulky tone; 'Seven jogged my " + "elbow.'On which Seven looked up and said, 'That's right, Five! Always lay the blame on others!''You'd better " + "not talk!' said Five. 'I heard the Queen say only yesterday you deserved to be beheaded!''What for?' said the " + "one who had spoken first.'That's none of your business, Two!' said Seven.'Yes, it is his business!' said " + "Five, 'and I'll tell him—it was for bringing the cook tulip-roots instead of onions.'Seven flung down his " + "brush, and had just begun 'Well, of all the unjust things—' when his eye chanced to fall upon Alice, as she " + "stood watching them, and he checked himself suddenly: the others looked round also, and all of them bowed " + "low.'Would you tell me,' said Alice, a little timidly, 'why you are painting those roses?'Five and Seven said " + "nothing, but looked at Two. Two began in a low voice, 'Why the fact is, you see, Miss, this here ought to " + "have been a red rose-tree, and we put a white one in by mistake; and if the Queen was to find it out, we " + "should all have our heads cut off, you know. So you see, Miss, we're doing our best, afore she comes, to—' At " + "this moment Five, who had been anxiously looking across the garden, called out 'The Queen! The Queen!' and " + "the three gardeners instantly threw themselves flat upon their faces. There was a sound of many footsteps, " + "and Alice looked round, eager to see the Queen.First came ten soldiers carrying clubs; these were all shaped " + "like the three gardeners, oblong and flat, with their hands and feet at the corners: next the ten courtiers; " + "these were ornamented all over with diamonds, and walked two and two, as the soldiers did. After these came " + "the royal children; there were ten of them, and the little dears came jumping merrily along hand in hand, in " + "couples: they were all ornamented with hearts. Next came the guests, mostly Kings and Queens, and among them " + "Alice recognised the White Rabbit: it was talking in a hurried nervous manner, smiling at everything that was " + "said, and went by without noticing her. Then followed the Knave of Hearts, carrying the King's crown on a " + "crimson velvet cushion; and, last of all this grand procession, came THE KING AND QUEEN OF HEARTS.Alice was " + "rather doubtful whether she ought not to lie down on her face like the three gardeners, but she could not " + "remember ever having heard of such a rule at processions; 'and besides, what would be the use of a " + "procession,' thought she, 'if people had all to lie down upon their faces, so that they couldn't see it?' So " + "she stood still where she was, and waited.When the procession came opposite to Alice, they all stopped and " + "looked at her, and the Queen said severely 'Who is this?' She said it to the Knave of Hearts, who only bowed " + "and smiled in reply.'Idiot!' said the Queen, tossing her head impatiently; and, turning to Alice, she went " + "on, 'What's your name, child?''My name is Alice, so please your Majesty,' said Alice very politely; but she " + "added, to herself, 'Why, they're only a pack of cards, after all. I needn't be afraid of them!''And who are " + "these?' said the Queen, pointing to the three gardeners who were lying round the rosetree; for, you see, as " + "they were lying on their faces, and the pattern on their backs was the same as the rest of the pack, she " + "could not tell whether they were gardeners, or soldiers, or courtiers, or three of her own children.'How " + "should I know?' said Alice, surprised at her own courage. 'It's no business of mine.'The Queen turned crimson " + "with fury, and, after glaring at her for a moment like a wild beast, screamed 'Off with her head! " + "Off—''Nonsense!' said Alice, very loudly and decidedly, and the Queen was silent.The King laid his hand upon " + "her arm, and timidly said 'Consider, my dear: she is only a child!'The Queen turned angrily away from him, " + "and said to the Knave 'Turn them over!'The Knave did so, very carefully, with one foot.'Get up!' said the " + "Queen, in a shrill, loud voice, and the three gardeners instantly jumped up, and began bowing to the King, " + "the Queen, the royal children, and everybody else.'Leave off that!' screamed the Queen. 'You make me giddy.' " + "And then, turning to the rose-tree, she went on, 'What have you been doing here?''May it please your " + "Majesty,' said Two, in a very humble tone, going down on one knee as he spoke, 'we were trying—''I see!' said " + "the Queen, who had meanwhile been examining the roses. 'Off with their heads!' and the procession moved on, " + "three of the soldiers remaining behind to execute the unfortunate gardeners, who ran to Alice for " + "protection.'You shan't be beheaded!' said Alice, and she put them into a large flower-pot that stood near. " + "The three soldiers wandered about for a minute or two, looking for them, and then quietly marched off after " + "the others.'Are their heads off?' shouted the Queen.'Their heads are gone, if it please your Majesty!' the " + "soldiers shouted in reply.'That's right!' shouted the Queen. 'Can you play croquet?'The soldiers were silent, " + "and looked at Alice, as the question was evidently meant for her.'Yes!' shouted Alice.'Come on, then!' roared " + "the Queen, and Alice joined the procession, wondering very much what would happen next.'It's—it's a very fine " + "day!' said a timid voice at her side. She was walking by the White Rabbit, who was peeping anxiously into her " + "face.'Very,' said Alice: '—where's the Duchess?''Hush! Hush!' said the Rabbit in a low, hurried tone. He " + "looked anxiously over his shoulder as he spoke, and then raised himself upon tiptoe, put his mouth close to " + "her ear, and whispered 'She's under sentence of execution.''What for?' said Alice.'Did you say \"What a " + "pity!\"?' the Rabbit asked.'No, I didn't,' said Alice: 'I don't think it's at all a pity. I said \"What " + "for?\"''She boxed the Queen's ears—' the Rabbit began. Alice gave a little scream of laughter. 'Oh, hush!' " + "the Rabbit whispered in a frightened tone. 'The Queen will hear you! You see, she came rather late, and the " + "Queen said—''Get to your places!' shouted the Queen in a voice of thunder, and people began running about in " + "all directions, tumbling up against each other; however, they got settled down in a minute or two, and the " + "game began. Alice thought she had never seen such a curious croquet-ground in her life; it was all ridges and " + "furrows; the balls were live hedgehogs, the mallets live flamingoes, and the soldiers had to double " + "themselves up and to stand on their hands and feet, to make the arches.The chief difficulty Alice found at " + "first was in managing her flamingo: she succeeded in getting its body tucked away, comfortably enough, under " + "her arm, with its legs hanging down, but generally, just as she had got its neck nicely straightened out, and " + "was going to give the hedgehog a blow with its head, it would twist itself round and look up in her face, " + "with such a puzzled expression that she could not help bursting out laughing: and when she had got its head " + "down, and was going to begin again, it was very provoking to find that the hedgehog had unrolled itself, and " + "was in the act of crawling away: besides all this, there was generally a ridge or furrow in the way wherever " + "she wanted to send the hedgehog to, and, as the doubled-up soldiers were always getting up and walking off to " + "other parts of the ground, Alice soon came to the conclusion that it was a very difficult game indeed.The " + "players all played at once without waiting for turns, quarrelling all the while, and fighting for the " + "hedgehogs; and in a very short time the Queen was in a furious passion, and went stamping about, and shouting " + "'Off with his head!' or 'Off with her head!' about once in a minute.Alice began to feel very uneasy: to be " + "sure, she had not as yet had any dispute with the Queen, but she knew that it might happen any minute, 'and " + "then,' thought she, 'what would become of me? They're dreadfully fond of beheading people here; the great " + "wonder is, that there's any one left alive!'She was looking about for some way of escape, and wondering " + "whether she could get away without being seen, when she noticed a curious appearance in the air: it puzzled " + "her very much at first, but, after watching it a minute or two, she made it out to be a grin, and she said to " + "herself 'It's the Cheshire Cat: now I shall have somebody to talk to.''How are you getting on?' said the Cat, " + "as soon as there was mouth enough for it to speak with.Alice waited till the eyes appeared, and then nodded. " + "'It's no use speaking to it,' she thought, 'till its ears have come, or at least one of them.' In another " + "minute the whole head appeared, and then Alice put down her flamingo, and began an account of the game, " + "feeling very glad she had someone to listen to her. The Cat seemed to think that there was enough of it now " + "in sight, and no more of it appeared.'I don't think they play at all fairly,' Alice began, in rather a " + "complaining tone, 'and they all quarrel so dreadfully one can't hear oneself speak—and they don't seem to " + "have any rules in particular; at least, if there are, nobody attends to them—and you've no idea how confusing " + "it is all the things being alive; for instance, there's the arch I've got to go through next walking about at " + "the other end of the ground—and I should have croqueted the Queen's hedgehog just now, only it ran away when " + "it saw mine coming!''How do you like the Queen?' said the Cat in a low voice.'Not at all,' said Alice: 'she's " + "so extremely—' Just then she noticed that the Queen was close behind her, listening: so she went on, '—likely " + "to win, that it's hardly worth while finishing the game.'The Queen smiled and passed on.'Who are you talking " + "to?' said the King, going up to Alice, and looking at the Cat's head with great curiosity.'It's a friend of " + "mine—a Cheshire Cat,' said Alice: 'allow me to introduce it.''I don't like the look of it at all,' said the " + "King: 'however, it may kiss my hand if it likes.''I'd rather not,' the Cat remarked.'Don't be impertinent,' " + "said the King, 'and don't look at me like that!' He got behind Alice as he spoke.'A cat may look at a king,' " + "said Alice. 'I've read that in some book, but I don't remember where.''Well, it must be removed,' said the " + "King very decidedly, and he called the Queen, who was passing at the moment, 'My dear! I wish you would have " + "this cat removed!'The Queen had only one way of settling all difficulties, great or small. 'Off with his " + "head!' she said, without even looking round.'I'll fetch the executioner myself,' said the King eagerly, and " + "he hurried off.Alice thought she might as well go back, and see how the game was going on, as she heard the " + "Queen's voice in the distance, screaming with passion. She had already heard her sentence three of the " + "players to be executed for having missed their turns, and she did not like the look of things at all, as the " + "game was in such confusion that she never knew whether it was her turn or not. So she went in search of her " + "hedgehog.The hedgehog was engaged in a fight with another hedgehog, which seemed to Alice an excellent " + "opportunity for croqueting one of them with the other: the only difficulty was, that her flamingo was gone " + "across to the other side of the garden, where Alice could see it trying in a helpless sort of way to fly up " + "into a tree.By the time she had caught the flamingo and brought it back, the fight was over, and both the " + "hedgehogs were out of sight: 'but it doesn't matter much,' thought Alice, 'as all the arches are gone from " + "this side of the ground.' So she tucked it away under her arm, that it might not escape again, and went back " + "for a little more conversation with her friend.When she got back to the Cheshire Cat, she was surprised to " + "find quite a large crowd collected round it: there was a dispute going on between the executioner, the King, " + "and the Queen, who were all talking at once, while all the rest were quite silent, and looked very " + "uncomfortable.The moment Alice appeared, she was appealed to by all three to settle the question, and they " + "repeated their arguments to her, though, as they all spoke at once, she found it very hard indeed to make out " + "exactly what they said.The executioner's argument was, that you couldn't cut off a head unless there was a " + "body to cut it off from: that he had never had to do such a thing before, and he wasn't going to begin at his " + "time of life.The King's argument was, that anything that had a head could be beheaded, and that you weren't " + "to talk nonsense.The Queen's argument was, that if something wasn't done about it in less than no time she'd " + "have everybody executed, all round. (It was this last remark that had made the whole party look so grave and " + "anxious.)Alice could think of nothing else to say but 'It belongs to the Duchess: you'd better ask her about " + "it.''She's in prison,' the Queen said to the executioner: 'fetch her here.' And the executioner went off like " + "an arrow.The Cat's head began fading away the moment he was gone, and, by the time he had come back with the " + "Duchess, it had entirely disappeared; so the King and the executioner ran wildly up and down looking for it, " + "while the rest of the party went back to the game."; + std::string output = + "QSBsYXJnZSByb3NlLXRyZWUgc3Rvb2QgbmVhciB0aGUgZW50cmFuY2Ugb2YgdGhlIGdhcmRlbjogdGhlIHJvc2VzIGdyb3dpbmcgb24gaXQgd2" + "VyZSB3aGl0ZSwgYnV0IHRoZXJlIHdlcmUgdGhyZWUgZ2FyZGVuZXJzIGF0IGl0LCBidXNpbHkgcGFpbnRpbmcgdGhlbSByZWQuIEFsaWNlIHRo" + "b3VnaHQgdGhpcyBhIHZlcnkgY3VyaW91cyB0aGluZywgYW5kIHNoZSB3ZW50IG5lYXJlciB0byB3YXRjaCB0aGVtLCBhbmQganVzdCBhcyBzaG" + "UgY2FtZSB1cCB0byB0aGVtIHNoZSBoZWFyZCBvbmUgb2YgdGhlbSBzYXksICdMb29rIG91dCBub3csIEZpdmUhIERvbid0IGdvIHNwbGFzaGlu" + "ZyBwYWludCBvdmVyIG1lIGxpa2UgdGhhdCEnJ0kgY291bGRuJ3QgaGVscCBpdCwnIHNhaWQgRml2ZSwgaW4gYSBzdWxreSB0b25lOyAnU2V2ZW" + "4gam9nZ2VkIG15IGVsYm93LidPbiB3aGljaCBTZXZlbiBsb29rZWQgdXAgYW5kIHNhaWQsICdUaGF0J3MgcmlnaHQsIEZpdmUhIEFsd2F5cyBs" + "YXkgdGhlIGJsYW1lIG9uIG90aGVycyEnJ1lvdSdkIGJldHRlciBub3QgdGFsayEnIHNhaWQgRml2ZS4gJ0kgaGVhcmQgdGhlIFF1ZWVuIHNheS" + "Bvbmx5IHllc3RlcmRheSB5b3UgZGVzZXJ2ZWQgdG8gYmUgYmVoZWFkZWQhJydXaGF0IGZvcj8nIHNhaWQgdGhlIG9uZSB3aG8gaGFkIHNwb2tl" + "biBmaXJzdC4nVGhhdCdzIG5vbmUgb2YgeW91ciBidXNpbmVzcywgVHdvIScgc2FpZCBTZXZlbi4nWWVzLCBpdCBpcyBoaXMgYnVzaW5lc3MhJy" + "BzYWlkIEZpdmUsICdhbmQgSSdsbCB0ZWxsIGhpbeKAlGl0IHdhcyBmb3IgYnJpbmdpbmcgdGhlIGNvb2sgdHVsaXAtcm9vdHMgaW5zdGVhZCBv" + "ZiBvbmlvbnMuJ1NldmVuIGZsdW5nIGRvd24gaGlzIGJydXNoLCBhbmQgaGFkIGp1c3QgYmVndW4gJ1dlbGwsIG9mIGFsbCB0aGUgdW5qdXN0IH" + "RoaW5nc+" + "KAlCcgd2hlbiBoaXMgZXllIGNoYW5jZWQgdG8gZmFsbCB1cG9uIEFsaWNlLCBhcyBzaGUgc3Rvb2Qgd2F0Y2hpbmcgdGhlbSwgYW5kIGhlIGNo" + "ZWNrZWQgaGltc2VsZiBzdWRkZW5seTogdGhlIG90aGVycyBsb29rZWQgcm91bmQgYWxzbywgYW5kIGFsbCBvZiB0aGVtIGJvd2VkIGxvdy4nV2" + "91bGQgeW91IHRlbGwgbWUsJyBzYWlkIEFsaWNlLCBhIGxpdHRsZSB0aW1pZGx5LCAnd2h5IHlvdSBhcmUgcGFpbnRpbmcgdGhvc2Ugcm9zZXM/" + "J0ZpdmUgYW5kIFNldmVuIHNhaWQgbm90aGluZywgYnV0IGxvb2tlZCBhdCBUd28uIFR3byBiZWdhbiBpbiBhIGxvdyB2b2ljZSwgJ1doeSB0aG" + "UgZmFjdCBpcywgeW91IHNlZSwgTWlzcywgdGhpcyBoZXJlIG91Z2h0IHRvIGhhdmUgYmVlbiBhIHJlZCByb3NlLXRyZWUsIGFuZCB3ZSBwdXQg" + "YSB3aGl0ZSBvbmUgaW4gYnkgbWlzdGFrZTsgYW5kIGlmIHRoZSBRdWVlbiB3YXMgdG8gZmluZCBpdCBvdXQsIHdlIHNob3VsZCBhbGwgaGF2ZS" + "BvdXIgaGVhZHMgY3V0IG9mZiwgeW91IGtub3cuIFNvIHlvdSBzZWUsIE1pc3MsIHdlJ3JlIGRvaW5nIG91ciBiZXN0LCBhZm9yZSBzaGUgY29t" + "ZXMsIHRv4oCUJyBBdCB0aGlzIG1vbWVudCBGaXZlLCB3aG8gaGFkIGJlZW4gYW54aW91c2x5IGxvb2tpbmcgYWNyb3NzIHRoZSBnYXJkZW4sIG" + "NhbGxlZCBvdXQgJ1RoZSBRdWVlbiEgVGhlIFF1ZWVuIScgYW5kIHRoZSB0aHJlZSBnYXJkZW5lcnMgaW5zdGFudGx5IHRocmV3IHRoZW1zZWx2" + "ZXMgZmxhdCB1cG9uIHRoZWlyIGZhY2VzLiBUaGVyZSB3YXMgYSBzb3VuZCBvZiBtYW55IGZvb3RzdGVwcywgYW5kIEFsaWNlIGxvb2tlZCByb3" + "VuZCwgZWFnZXIgdG8gc2VlIHRoZSBRdWVlbi5GaXJzdCBjYW1lIHRlbiBzb2xkaWVycyBjYXJyeWluZyBjbHViczsgdGhlc2Ugd2VyZSBhbGwg" + "c2hhcGVkIGxpa2UgdGhlIHRocmVlIGdhcmRlbmVycywgb2Jsb25nIGFuZCBmbGF0LCB3aXRoIHRoZWlyIGhhbmRzIGFuZCBmZWV0IGF0IHRoZS" + "Bjb3JuZXJzOiBuZXh0IHRoZSB0ZW4gY291cnRpZXJzOyB0aGVzZSB3ZXJlIG9ybmFtZW50ZWQgYWxsIG92ZXIgd2l0aCBkaWFtb25kcywgYW5k" + "IHdhbGtlZCB0d28gYW5kIHR3bywgYXMgdGhlIHNvbGRpZXJzIGRpZC4gQWZ0ZXIgdGhlc2UgY2FtZSB0aGUgcm95YWwgY2hpbGRyZW47IHRoZX" + "JlIHdlcmUgdGVuIG9mIHRoZW0sIGFuZCB0aGUgbGl0dGxlIGRlYXJzIGNhbWUganVtcGluZyBtZXJyaWx5IGFsb25nIGhhbmQgaW4gaGFuZCwg" + "aW4gY291cGxlczogdGhleSB3ZXJlIGFsbCBvcm5hbWVudGVkIHdpdGggaGVhcnRzLiBOZXh0IGNhbWUgdGhlIGd1ZXN0cywgbW9zdGx5IEtpbm" + "dzIGFuZCBRdWVlbnMsIGFuZCBhbW9uZyB0aGVtIEFsaWNlIHJlY29nbmlzZWQgdGhlIFdoaXRlIFJhYmJpdDogaXQgd2FzIHRhbGtpbmcgaW4g" + "YSBodXJyaWVkIG5lcnZvdXMgbWFubmVyLCBzbWlsaW5nIGF0IGV2ZXJ5dGhpbmcgdGhhdCB3YXMgc2FpZCwgYW5kIHdlbnQgYnkgd2l0aG91dC" + "Bub3RpY2luZyBoZXIuIFRoZW4gZm9sbG93ZWQgdGhlIEtuYXZlIG9mIEhlYXJ0cywgY2FycnlpbmcgdGhlIEtpbmcncyBjcm93biBvbiBhIGNy" + "aW1zb24gdmVsdmV0IGN1c2hpb247IGFuZCwgbGFzdCBvZiBhbGwgdGhpcyBncmFuZCBwcm9jZXNzaW9uLCBjYW1lIFRIRSBLSU5HIEFORCBRVU" + "VFTiBPRiBIRUFSVFMuQWxpY2Ugd2FzIHJhdGhlciBkb3VidGZ1bCB3aGV0aGVyIHNoZSBvdWdodCBub3QgdG8gbGllIGRvd24gb24gaGVyIGZh" + "Y2UgbGlrZSB0aGUgdGhyZWUgZ2FyZGVuZXJzLCBidXQgc2hlIGNvdWxkIG5vdCByZW1lbWJlciBldmVyIGhhdmluZyBoZWFyZCBvZiBzdWNoIG" + "EgcnVsZSBhdCBwcm9jZXNzaW9uczsgJ2FuZCBiZXNpZGVzLCB3aGF0IHdvdWxkIGJlIHRoZSB1c2Ugb2YgYSBwcm9jZXNzaW9uLCcgdGhvdWdo" + "dCBzaGUsICdpZiBwZW9wbGUgaGFkIGFsbCB0byBsaWUgZG93biB1cG9uIHRoZWlyIGZhY2VzLCBzbyB0aGF0IHRoZXkgY291bGRuJ3Qgc2VlIG" + "l0PycgU28gc2hlIHN0b29kIHN0aWxsIHdoZXJlIHNoZSB3YXMsIGFuZCB3YWl0ZWQuV2hlbiB0aGUgcHJvY2Vzc2lvbiBjYW1lIG9wcG9zaXRl" + "IHRvIEFsaWNlLCB0aGV5IGFsbCBzdG9wcGVkIGFuZCBsb29rZWQgYXQgaGVyLCBhbmQgdGhlIFF1ZWVuIHNhaWQgc2V2ZXJlbHkgJ1dobyBpcy" + "B0aGlzPycgU2hlIHNhaWQgaXQgdG8gdGhlIEtuYXZlIG9mIEhlYXJ0cywgd2hvIG9ubHkgYm93ZWQgYW5kIHNtaWxlZCBpbiByZXBseS4nSWRp" + "b3QhJyBzYWlkIHRoZSBRdWVlbiwgdG9zc2luZyBoZXIgaGVhZCBpbXBhdGllbnRseTsgYW5kLCB0dXJuaW5nIHRvIEFsaWNlLCBzaGUgd2VudC" + "BvbiwgJ1doYXQncyB5b3VyIG5hbWUsIGNoaWxkPycnTXkgbmFtZSBpcyBBbGljZSwgc28gcGxlYXNlIHlvdXIgTWFqZXN0eSwnIHNhaWQgQWxp" + "Y2UgdmVyeSBwb2xpdGVseTsgYnV0IHNoZSBhZGRlZCwgdG8gaGVyc2VsZiwgJ1doeSwgdGhleSdyZSBvbmx5IGEgcGFjayBvZiBjYXJkcywgYW" + "Z0ZXIgYWxsLiBJIG5lZWRuJ3QgYmUgYWZyYWlkIG9mIHRoZW0hJydBbmQgd2hvIGFyZSB0aGVzZT8nIHNhaWQgdGhlIFF1ZWVuLCBwb2ludGlu" + "ZyB0byB0aGUgdGhyZWUgZ2FyZGVuZXJzIHdobyB3ZXJlIGx5aW5nIHJvdW5kIHRoZSByb3NldHJlZTsgZm9yLCB5b3Ugc2VlLCBhcyB0aGV5IH" + "dlcmUgbHlpbmcgb24gdGhlaXIgZmFjZXMsIGFuZCB0aGUgcGF0dGVybiBvbiB0aGVpciBiYWNrcyB3YXMgdGhlIHNhbWUgYXMgdGhlIHJlc3Qg" + "b2YgdGhlIHBhY2ssIHNoZSBjb3VsZCBub3QgdGVsbCB3aGV0aGVyIHRoZXkgd2VyZSBnYXJkZW5lcnMsIG9yIHNvbGRpZXJzLCBvciBjb3VydG" + "llcnMsIG9yIHRocmVlIG9mIGhlciBvd24gY2hpbGRyZW4uJ0hvdyBzaG91bGQgSSBrbm93Pycgc2FpZCBBbGljZSwgc3VycHJpc2VkIGF0IGhl" + "ciBvd24gY291cmFnZS4gJ0l0J3Mgbm8gYnVzaW5lc3Mgb2YgbWluZS4nVGhlIFF1ZWVuIHR1cm5lZCBjcmltc29uIHdpdGggZnVyeSwgYW5kLC" + "BhZnRlciBnbGFyaW5nIGF0IGhlciBmb3IgYSBtb21lbnQgbGlrZSBhIHdpbGQgYmVhc3QsIHNjcmVhbWVkICdPZmYgd2l0aCBoZXIgaGVhZCEg" + "T2Zm4oCUJydOb25zZW5zZSEnIHNhaWQgQWxpY2UsIHZlcnkgbG91ZGx5IGFuZCBkZWNpZGVkbHksIGFuZCB0aGUgUXVlZW4gd2FzIHNpbGVudC" + "5UaGUgS2luZyBsYWlkIGhpcyBoYW5kIHVwb24gaGVyIGFybSwgYW5kIHRpbWlkbHkgc2FpZCAnQ29uc2lkZXIsIG15IGRlYXI6IHNoZSBpcyBv" + "bmx5IGEgY2hpbGQhJ1RoZSBRdWVlbiB0dXJuZWQgYW5ncmlseSBhd2F5IGZyb20gaGltLCBhbmQgc2FpZCB0byB0aGUgS25hdmUgJ1R1cm4gdG" + "hlbSBvdmVyISdUaGUgS25hdmUgZGlkIHNvLCB2ZXJ5IGNhcmVmdWxseSwgd2l0aCBvbmUgZm9vdC4nR2V0IHVwIScgc2FpZCB0aGUgUXVlZW4s" + "IGluIGEgc2hyaWxsLCBsb3VkIHZvaWNlLCBhbmQgdGhlIHRocmVlIGdhcmRlbmVycyBpbnN0YW50bHkganVtcGVkIHVwLCBhbmQgYmVnYW4gYm" + "93aW5nIHRvIHRoZSBLaW5nLCB0aGUgUXVlZW4sIHRoZSByb3lhbCBjaGlsZHJlbiwgYW5kIGV2ZXJ5Ym9keSBlbHNlLidMZWF2ZSBvZmYgdGhh" + "dCEnIHNjcmVhbWVkIHRoZSBRdWVlbi4gJ1lvdSBtYWtlIG1lIGdpZGR5LicgQW5kIHRoZW4sIHR1cm5pbmcgdG8gdGhlIHJvc2UtdHJlZSwgc2" + "hlIHdlbnQgb24sICdXaGF0IGhhdmUgeW91IGJlZW4gZG9pbmcgaGVyZT8nJ01heSBpdCBwbGVhc2UgeW91ciBNYWplc3R5LCcgc2FpZCBUd28s" + "IGluIGEgdmVyeSBodW1ibGUgdG9uZSwgZ29pbmcgZG93biBvbiBvbmUga25lZSBhcyBoZSBzcG9rZSwgJ3dlIHdlcmUgdHJ5aW5n4oCUJydJIH" + "NlZSEnIHNhaWQgdGhlIFF1ZWVuLCB3aG8gaGFkIG1lYW53aGlsZSBiZWVuIGV4YW1pbmluZyB0aGUgcm9zZXMuICdPZmYgd2l0aCB0aGVpciBo" + "ZWFkcyEnIGFuZCB0aGUgcHJvY2Vzc2lvbiBtb3ZlZCBvbiwgdGhyZWUgb2YgdGhlIHNvbGRpZXJzIHJlbWFpbmluZyBiZWhpbmQgdG8gZXhlY3" + "V0ZSB0aGUgdW5mb3J0dW5hdGUgZ2FyZGVuZXJzLCB3aG8gcmFuIHRvIEFsaWNlIGZvciBwcm90ZWN0aW9uLidZb3Ugc2hhbid0IGJlIGJlaGVh" + "ZGVkIScgc2FpZCBBbGljZSwgYW5kIHNoZSBwdXQgdGhlbSBpbnRvIGEgbGFyZ2UgZmxvd2VyLXBvdCB0aGF0IHN0b29kIG5lYXIuIFRoZSB0aH" + "JlZSBzb2xkaWVycyB3YW5kZXJlZCBhYm91dCBmb3IgYSBtaW51dGUgb3IgdHdvLCBsb29raW5nIGZvciB0aGVtLCBhbmQgdGhlbiBxdWlldGx5" + "IG1hcmNoZWQgb2ZmIGFmdGVyIHRoZSBvdGhlcnMuJ0FyZSB0aGVpciBoZWFkcyBvZmY/" + "JyBzaG91dGVkIHRoZSBRdWVlbi4nVGhlaXIgaGVhZHMgYXJlIGdvbmUsIGlmIGl0IHBsZWFzZSB5b3VyIE1hamVzdHkhJyB0aGUgc29sZGllcn" + "Mgc2hvdXRlZCBpbiByZXBseS4nVGhhdCdzIHJpZ2h0IScgc2hvdXRlZCB0aGUgUXVlZW4uICdDYW4geW91IHBsYXkgY3JvcXVldD8nVGhlIHNv" + "bGRpZXJzIHdlcmUgc2lsZW50LCBhbmQgbG9va2VkIGF0IEFsaWNlLCBhcyB0aGUgcXVlc3Rpb24gd2FzIGV2aWRlbnRseSBtZWFudCBmb3IgaG" + "VyLidZZXMhJyBzaG91dGVkIEFsaWNlLidDb21lIG9uLCB0aGVuIScgcm9hcmVkIHRoZSBRdWVlbiwgYW5kIEFsaWNlIGpvaW5lZCB0aGUgcHJv" + "Y2Vzc2lvbiwgd29uZGVyaW5nIHZlcnkgbXVjaCB3aGF0IHdvdWxkIGhhcHBlbiBuZXh0LidJdCdz4oCUaXQncyBhIHZlcnkgZmluZSBkYXkhJy" + "BzYWlkIGEgdGltaWQgdm9pY2UgYXQgaGVyIHNpZGUuIFNoZSB3YXMgd2Fsa2luZyBieSB0aGUgV2hpdGUgUmFiYml0LCB3aG8gd2FzIHBlZXBp" + "bmcgYW54aW91c2x5IGludG8gaGVyIGZhY2UuJ1ZlcnksJyBzYWlkIEFsaWNlOiAn4oCUd2hlcmUncyB0aGUgRHVjaGVzcz8nJ0h1c2ghIEh1c2" + "ghJyBzYWlkIHRoZSBSYWJiaXQgaW4gYSBsb3csIGh1cnJpZWQgdG9uZS4gSGUgbG9va2VkIGFueGlvdXNseSBvdmVyIGhpcyBzaG91bGRlciBh" + "cyBoZSBzcG9rZSwgYW5kIHRoZW4gcmFpc2VkIGhpbXNlbGYgdXBvbiB0aXB0b2UsIHB1dCBoaXMgbW91dGggY2xvc2UgdG8gaGVyIGVhciwgYW" + "5kIHdoaXNwZXJlZCAnU2hlJ3MgdW5kZXIgc2VudGVuY2Ugb2YgZXhlY3V0aW9uLicnV2hhdCBmb3I/" + "JyBzYWlkIEFsaWNlLidEaWQgeW91IHNheSAiV2hhdCBhIHBpdHkhIj8nIHRoZSBSYWJiaXQgYXNrZWQuJ05vLCBJIGRpZG4ndCwnIHNhaWQgQW" + "xpY2U6ICdJIGRvbid0IHRoaW5rIGl0J3MgYXQgYWxsIGEgcGl0eS4gSSBzYWlkICJXaGF0IGZvcj8iJydTaGUgYm94ZWQgdGhlIFF1ZWVuJ3Mg" + "ZWFyc+" + "KAlCcgdGhlIFJhYmJpdCBiZWdhbi4gQWxpY2UgZ2F2ZSBhIGxpdHRsZSBzY3JlYW0gb2YgbGF1Z2h0ZXIuICdPaCwgaHVzaCEnIHRoZSBSYWJi" + "aXQgd2hpc3BlcmVkIGluIGEgZnJpZ2h0ZW5lZCB0b25lLiAnVGhlIFF1ZWVuIHdpbGwgaGVhciB5b3UhIFlvdSBzZWUsIHNoZSBjYW1lIHJhdG" + "hlciBsYXRlLCBhbmQgdGhlIFF1ZWVuIHNhaWTigJQnJ0dldCB0byB5b3VyIHBsYWNlcyEnIHNob3V0ZWQgdGhlIFF1ZWVuIGluIGEgdm9pY2Ug" + "b2YgdGh1bmRlciwgYW5kIHBlb3BsZSBiZWdhbiBydW5uaW5nIGFib3V0IGluIGFsbCBkaXJlY3Rpb25zLCB0dW1ibGluZyB1cCBhZ2FpbnN0IG" + "VhY2ggb3RoZXI7IGhvd2V2ZXIsIHRoZXkgZ290IHNldHRsZWQgZG93biBpbiBhIG1pbnV0ZSBvciB0d28sIGFuZCB0aGUgZ2FtZSBiZWdhbi4g" + "QWxpY2UgdGhvdWdodCBzaGUgaGFkIG5ldmVyIHNlZW4gc3VjaCBhIGN1cmlvdXMgY3JvcXVldC1ncm91bmQgaW4gaGVyIGxpZmU7IGl0IHdhcy" + "BhbGwgcmlkZ2VzIGFuZCBmdXJyb3dzOyB0aGUgYmFsbHMgd2VyZSBsaXZlIGhlZGdlaG9ncywgdGhlIG1hbGxldHMgbGl2ZSBmbGFtaW5nb2Vz" + "LCBhbmQgdGhlIHNvbGRpZXJzIGhhZCB0byBkb3VibGUgdGhlbXNlbHZlcyB1cCBhbmQgdG8gc3RhbmQgb24gdGhlaXIgaGFuZHMgYW5kIGZlZX" + "QsIHRvIG1ha2UgdGhlIGFyY2hlcy5UaGUgY2hpZWYgZGlmZmljdWx0eSBBbGljZSBmb3VuZCBhdCBmaXJzdCB3YXMgaW4gbWFuYWdpbmcgaGVy" + "IGZsYW1pbmdvOiBzaGUgc3VjY2VlZGVkIGluIGdldHRpbmcgaXRzIGJvZHkgdHVja2VkIGF3YXksIGNvbWZvcnRhYmx5IGVub3VnaCwgdW5kZX" + "IgaGVyIGFybSwgd2l0aCBpdHMgbGVncyBoYW5naW5nIGRvd24sIGJ1dCBnZW5lcmFsbHksIGp1c3QgYXMgc2hlIGhhZCBnb3QgaXRzIG5lY2sg" + "bmljZWx5IHN0cmFpZ2h0ZW5lZCBvdXQsIGFuZCB3YXMgZ29pbmcgdG8gZ2l2ZSB0aGUgaGVkZ2Vob2cgYSBibG93IHdpdGggaXRzIGhlYWQsIG" + "l0IHdvdWxkIHR3aXN0IGl0c2VsZiByb3VuZCBhbmQgbG9vayB1cCBpbiBoZXIgZmFjZSwgd2l0aCBzdWNoIGEgcHV6emxlZCBleHByZXNzaW9u" + "IHRoYXQgc2hlIGNvdWxkIG5vdCBoZWxwIGJ1cnN0aW5nIG91dCBsYXVnaGluZzogYW5kIHdoZW4gc2hlIGhhZCBnb3QgaXRzIGhlYWQgZG93bi" + "wgYW5kIHdhcyBnb2luZyB0byBiZWdpbiBhZ2FpbiwgaXQgd2FzIHZlcnkgcHJvdm9raW5nIHRvIGZpbmQgdGhhdCB0aGUgaGVkZ2Vob2cgaGFk" + "IHVucm9sbGVkIGl0c2VsZiwgYW5kIHdhcyBpbiB0aGUgYWN0IG9mIGNyYXdsaW5nIGF3YXk6IGJlc2lkZXMgYWxsIHRoaXMsIHRoZXJlIHdhcy" + "BnZW5lcmFsbHkgYSByaWRnZSBvciBmdXJyb3cgaW4gdGhlIHdheSB3aGVyZXZlciBzaGUgd2FudGVkIHRvIHNlbmQgdGhlIGhlZGdlaG9nIHRv" + "LCBhbmQsIGFzIHRoZSBkb3VibGVkLXVwIHNvbGRpZXJzIHdlcmUgYWx3YXlzIGdldHRpbmcgdXAgYW5kIHdhbGtpbmcgb2ZmIHRvIG90aGVyIH" + "BhcnRzIG9mIHRoZSBncm91bmQsIEFsaWNlIHNvb24gY2FtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGl0IHdhcyBhIHZlcnkgZGlmZmljdWx0" + "IGdhbWUgaW5kZWVkLlRoZSBwbGF5ZXJzIGFsbCBwbGF5ZWQgYXQgb25jZSB3aXRob3V0IHdhaXRpbmcgZm9yIHR1cm5zLCBxdWFycmVsbGluZy" + "BhbGwgdGhlIHdoaWxlLCBhbmQgZmlnaHRpbmcgZm9yIHRoZSBoZWRnZWhvZ3M7IGFuZCBpbiBhIHZlcnkgc2hvcnQgdGltZSB0aGUgUXVlZW4g" + "d2FzIGluIGEgZnVyaW91cyBwYXNzaW9uLCBhbmQgd2VudCBzdGFtcGluZyBhYm91dCwgYW5kIHNob3V0aW5nICdPZmYgd2l0aCBoaXMgaGVhZC" + "EnIG9yICdPZmYgd2l0aCBoZXIgaGVhZCEnIGFib3V0IG9uY2UgaW4gYSBtaW51dGUuQWxpY2UgYmVnYW4gdG8gZmVlbCB2ZXJ5IHVuZWFzeTog" + "dG8gYmUgc3VyZSwgc2hlIGhhZCBub3QgYXMgeWV0IGhhZCBhbnkgZGlzcHV0ZSB3aXRoIHRoZSBRdWVlbiwgYnV0IHNoZSBrbmV3IHRoYXQgaX" + "QgbWlnaHQgaGFwcGVuIGFueSBtaW51dGUsICdhbmQgdGhlbiwnIHRob3VnaHQgc2hlLCAnd2hhdCB3b3VsZCBiZWNvbWUgb2YgbWU/" + "IFRoZXkncmUgZHJlYWRmdWxseSBmb25kIG9mIGJlaGVhZGluZyBwZW9wbGUgaGVyZTsgdGhlIGdyZWF0IHdvbmRlciBpcywgdGhhdCB0aGVyZS" + "dzIGFueSBvbmUgbGVmdCBhbGl2ZSEnU2hlIHdhcyBsb29raW5nIGFib3V0IGZvciBzb21lIHdheSBvZiBlc2NhcGUsIGFuZCB3b25kZXJpbmcg" + "d2hldGhlciBzaGUgY291bGQgZ2V0IGF3YXkgd2l0aG91dCBiZWluZyBzZWVuLCB3aGVuIHNoZSBub3RpY2VkIGEgY3VyaW91cyBhcHBlYXJhbm" + "NlIGluIHRoZSBhaXI6IGl0IHB1enpsZWQgaGVyIHZlcnkgbXVjaCBhdCBmaXJzdCwgYnV0LCBhZnRlciB3YXRjaGluZyBpdCBhIG1pbnV0ZSBv" + "ciB0d28sIHNoZSBtYWRlIGl0IG91dCB0byBiZSBhIGdyaW4sIGFuZCBzaGUgc2FpZCB0byBoZXJzZWxmICdJdCdzIHRoZSBDaGVzaGlyZSBDYX" + "Q6IG5vdyBJIHNoYWxsIGhhdmUgc29tZWJvZHkgdG8gdGFsayB0by4nJ0hvdyBhcmUgeW91IGdldHRpbmcgb24/" + "JyBzYWlkIHRoZSBDYXQsIGFzIHNvb24gYXMgdGhlcmUgd2FzIG1vdXRoIGVub3VnaCBmb3IgaXQgdG8gc3BlYWsgd2l0aC5BbGljZSB3YWl0ZW" + "QgdGlsbCB0aGUgZXllcyBhcHBlYXJlZCwgYW5kIHRoZW4gbm9kZGVkLiAnSXQncyBubyB1c2Ugc3BlYWtpbmcgdG8gaXQsJyBzaGUgdGhvdWdo" + "dCwgJ3RpbGwgaXRzIGVhcnMgaGF2ZSBjb21lLCBvciBhdCBsZWFzdCBvbmUgb2YgdGhlbS4nIEluIGFub3RoZXIgbWludXRlIHRoZSB3aG9sZS" + "BoZWFkIGFwcGVhcmVkLCBhbmQgdGhlbiBBbGljZSBwdXQgZG93biBoZXIgZmxhbWluZ28sIGFuZCBiZWdhbiBhbiBhY2NvdW50IG9mIHRoZSBn" + "YW1lLCBmZWVsaW5nIHZlcnkgZ2xhZCBzaGUgaGFkIHNvbWVvbmUgdG8gbGlzdGVuIHRvIGhlci4gVGhlIENhdCBzZWVtZWQgdG8gdGhpbmsgdG" + "hhdCB0aGVyZSB3YXMgZW5vdWdoIG9mIGl0IG5vdyBpbiBzaWdodCwgYW5kIG5vIG1vcmUgb2YgaXQgYXBwZWFyZWQuJ0kgZG9uJ3QgdGhpbmsg" + "dGhleSBwbGF5IGF0IGFsbCBmYWlybHksJyBBbGljZSBiZWdhbiwgaW4gcmF0aGVyIGEgY29tcGxhaW5pbmcgdG9uZSwgJ2FuZCB0aGV5IGFsbC" + "BxdWFycmVsIHNvIGRyZWFkZnVsbHkgb25lIGNhbid0IGhlYXIgb25lc2VsZiBzcGVha+" + "KAlGFuZCB0aGV5IGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgcnVsZXMgaW4gcGFydGljdWxhcjsgYXQgbGVhc3QsIGlmIHRoZXJlIGFyZSwgbm9i" + "b2R5IGF0dGVuZHMgdG8gdGhlbeKAlGFuZCB5b3UndmUgbm8gaWRlYSBob3cgY29uZnVzaW5nIGl0IGlzIGFsbCB0aGUgdGhpbmdzIGJlaW5nIG" + "FsaXZlOyBmb3IgaW5zdGFuY2UsIHRoZXJlJ3MgdGhlIGFyY2ggSSd2ZSBnb3QgdG8gZ28gdGhyb3VnaCBuZXh0IHdhbGtpbmcgYWJvdXQgYXQg" + "dGhlIG90aGVyIGVuZCBvZiB0aGUgZ3JvdW5k4oCUYW5kIEkgc2hvdWxkIGhhdmUgY3JvcXVldGVkIHRoZSBRdWVlbidzIGhlZGdlaG9nIGp1c3" + "Qgbm93LCBvbmx5IGl0IHJhbiBhd2F5IHdoZW4gaXQgc2F3IG1pbmUgY29taW5nIScnSG93IGRvIHlvdSBsaWtlIHRoZSBRdWVlbj8nIHNhaWQg" + "dGhlIENhdCBpbiBhIGxvdyB2b2ljZS4nTm90IGF0IGFsbCwnIHNhaWQgQWxpY2U6ICdzaGUncyBzbyBleHRyZW1lbHnigJQnIEp1c3QgdGhlbi" + "BzaGUgbm90aWNlZCB0aGF0IHRoZSBRdWVlbiB3YXMgY2xvc2UgYmVoaW5kIGhlciwgbGlzdGVuaW5nOiBzbyBzaGUgd2VudCBvbiwgJ+" + "KAlGxpa2VseSB0byB3aW4sIHRoYXQgaXQncyBoYXJkbHkgd29ydGggd2hpbGUgZmluaXNoaW5nIHRoZSBnYW1lLidUaGUgUXVlZW4gc21pbGVk" + "IGFuZCBwYXNzZWQgb24uJ1dobyBhcmUgeW91IHRhbGtpbmcgdG8/" + "JyBzYWlkIHRoZSBLaW5nLCBnb2luZyB1cCB0byBBbGljZSwgYW5kIGxvb2tpbmcgYXQgdGhlIENhdCdzIGhlYWQgd2l0aCBncmVhdCBjdXJpb3" + "NpdHkuJ0l0J3MgYSBmcmllbmQgb2YgbWluZeKAlGEgQ2hlc2hpcmUgQ2F0LCcgc2FpZCBBbGljZTogJ2FsbG93IG1lIHRvIGludHJvZHVjZSBp" + "dC4nJ0kgZG9uJ3QgbGlrZSB0aGUgbG9vayBvZiBpdCBhdCBhbGwsJyBzYWlkIHRoZSBLaW5nOiAnaG93ZXZlciwgaXQgbWF5IGtpc3MgbXkgaG" + "FuZCBpZiBpdCBsaWtlcy4nJ0knZCByYXRoZXIgbm90LCcgdGhlIENhdCByZW1hcmtlZC4nRG9uJ3QgYmUgaW1wZXJ0aW5lbnQsJyBzYWlkIHRo" + "ZSBLaW5nLCAnYW5kIGRvbid0IGxvb2sgYXQgbWUgbGlrZSB0aGF0IScgSGUgZ290IGJlaGluZCBBbGljZSBhcyBoZSBzcG9rZS4nQSBjYXQgbW" + "F5IGxvb2sgYXQgYSBraW5nLCcgc2FpZCBBbGljZS4gJ0kndmUgcmVhZCB0aGF0IGluIHNvbWUgYm9vaywgYnV0IEkgZG9uJ3QgcmVtZW1iZXIg" + "d2hlcmUuJydXZWxsLCBpdCBtdXN0IGJlIHJlbW92ZWQsJyBzYWlkIHRoZSBLaW5nIHZlcnkgZGVjaWRlZGx5LCBhbmQgaGUgY2FsbGVkIHRoZS" + "BRdWVlbiwgd2hvIHdhcyBwYXNzaW5nIGF0IHRoZSBtb21lbnQsICdNeSBkZWFyISBJIHdpc2ggeW91IHdvdWxkIGhhdmUgdGhpcyBjYXQgcmVt" + "b3ZlZCEnVGhlIFF1ZWVuIGhhZCBvbmx5IG9uZSB3YXkgb2Ygc2V0dGxpbmcgYWxsIGRpZmZpY3VsdGllcywgZ3JlYXQgb3Igc21hbGwuICdPZm" + "Ygd2l0aCBoaXMgaGVhZCEnIHNoZSBzYWlkLCB3aXRob3V0IGV2ZW4gbG9va2luZyByb3VuZC4nSSdsbCBmZXRjaCB0aGUgZXhlY3V0aW9uZXIg" + "bXlzZWxmLCcgc2FpZCB0aGUgS2luZyBlYWdlcmx5LCBhbmQgaGUgaHVycmllZCBvZmYuQWxpY2UgdGhvdWdodCBzaGUgbWlnaHQgYXMgd2VsbC" + "BnbyBiYWNrLCBhbmQgc2VlIGhvdyB0aGUgZ2FtZSB3YXMgZ29pbmcgb24sIGFzIHNoZSBoZWFyZCB0aGUgUXVlZW4ncyB2b2ljZSBpbiB0aGUg" + "ZGlzdGFuY2UsIHNjcmVhbWluZyB3aXRoIHBhc3Npb24uIFNoZSBoYWQgYWxyZWFkeSBoZWFyZCBoZXIgc2VudGVuY2UgdGhyZWUgb2YgdGhlIH" + "BsYXllcnMgdG8gYmUgZXhlY3V0ZWQgZm9yIGhhdmluZyBtaXNzZWQgdGhlaXIgdHVybnMsIGFuZCBzaGUgZGlkIG5vdCBsaWtlIHRoZSBsb29r" + "IG9mIHRoaW5ncyBhdCBhbGwsIGFzIHRoZSBnYW1lIHdhcyBpbiBzdWNoIGNvbmZ1c2lvbiB0aGF0IHNoZSBuZXZlciBrbmV3IHdoZXRoZXIgaX" + "Qgd2FzIGhlciB0dXJuIG9yIG5vdC4gU28gc2hlIHdlbnQgaW4gc2VhcmNoIG9mIGhlciBoZWRnZWhvZy5UaGUgaGVkZ2Vob2cgd2FzIGVuZ2Fn" + "ZWQgaW4gYSBmaWdodCB3aXRoIGFub3RoZXIgaGVkZ2Vob2csIHdoaWNoIHNlZW1lZCB0byBBbGljZSBhbiBleGNlbGxlbnQgb3Bwb3J0dW5pdH" + "kgZm9yIGNyb3F1ZXRpbmcgb25lIG9mIHRoZW0gd2l0aCB0aGUgb3RoZXI6IHRoZSBvbmx5IGRpZmZpY3VsdHkgd2FzLCB0aGF0IGhlciBmbGFt" + "aW5nbyB3YXMgZ29uZSBhY3Jvc3MgdG8gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGdhcmRlbiwgd2hlcmUgQWxpY2UgY291bGQgc2VlIGl0IHRyeW" + "luZyBpbiBhIGhlbHBsZXNzIHNvcnQgb2Ygd2F5IHRvIGZseSB1cCBpbnRvIGEgdHJlZS5CeSB0aGUgdGltZSBzaGUgaGFkIGNhdWdodCB0aGUg" + "ZmxhbWluZ28gYW5kIGJyb3VnaHQgaXQgYmFjaywgdGhlIGZpZ2h0IHdhcyBvdmVyLCBhbmQgYm90aCB0aGUgaGVkZ2Vob2dzIHdlcmUgb3V0IG" + "9mIHNpZ2h0OiAnYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIG11Y2gsJyB0aG91Z2h0IEFsaWNlLCAnYXMgYWxsIHRoZSBhcmNoZXMgYXJlIGdvbmUg" + "ZnJvbSB0aGlzIHNpZGUgb2YgdGhlIGdyb3VuZC4nIFNvIHNoZSB0dWNrZWQgaXQgYXdheSB1bmRlciBoZXIgYXJtLCB0aGF0IGl0IG1pZ2h0IG" + "5vdCBlc2NhcGUgYWdhaW4sIGFuZCB3ZW50IGJhY2sgZm9yIGEgbGl0dGxlIG1vcmUgY29udmVyc2F0aW9uIHdpdGggaGVyIGZyaWVuZC5XaGVu" + "IHNoZSBnb3QgYmFjayB0byB0aGUgQ2hlc2hpcmUgQ2F0LCBzaGUgd2FzIHN1cnByaXNlZCB0byBmaW5kIHF1aXRlIGEgbGFyZ2UgY3Jvd2QgY2" + "9sbGVjdGVkIHJvdW5kIGl0OiB0aGVyZSB3YXMgYSBkaXNwdXRlIGdvaW5nIG9uIGJldHdlZW4gdGhlIGV4ZWN1dGlvbmVyLCB0aGUgS2luZywg" + "YW5kIHRoZSBRdWVlbiwgd2hvIHdlcmUgYWxsIHRhbGtpbmcgYXQgb25jZSwgd2hpbGUgYWxsIHRoZSByZXN0IHdlcmUgcXVpdGUgc2lsZW50LC" + "BhbmQgbG9va2VkIHZlcnkgdW5jb21mb3J0YWJsZS5UaGUgbW9tZW50IEFsaWNlIGFwcGVhcmVkLCBzaGUgd2FzIGFwcGVhbGVkIHRvIGJ5IGFs" + "bCB0aHJlZSB0byBzZXR0bGUgdGhlIHF1ZXN0aW9uLCBhbmQgdGhleSByZXBlYXRlZCB0aGVpciBhcmd1bWVudHMgdG8gaGVyLCB0aG91Z2gsIG" + "FzIHRoZXkgYWxsIHNwb2tlIGF0IG9uY2UsIHNoZSBmb3VuZCBpdCB2ZXJ5IGhhcmQgaW5kZWVkIHRvIG1ha2Ugb3V0IGV4YWN0bHkgd2hhdCB0" + "aGV5IHNhaWQuVGhlIGV4ZWN1dGlvbmVyJ3MgYXJndW1lbnQgd2FzLCB0aGF0IHlvdSBjb3VsZG4ndCBjdXQgb2ZmIGEgaGVhZCB1bmxlc3MgdG" + "hlcmUgd2FzIGEgYm9keSB0byBjdXQgaXQgb2ZmIGZyb206IHRoYXQgaGUgaGFkIG5ldmVyIGhhZCB0byBkbyBzdWNoIGEgdGhpbmcgYmVmb3Jl" + "LCBhbmQgaGUgd2Fzbid0IGdvaW5nIHRvIGJlZ2luIGF0IGhpcyB0aW1lIG9mIGxpZmUuVGhlIEtpbmcncyBhcmd1bWVudCB3YXMsIHRoYXQgYW" + "55dGhpbmcgdGhhdCBoYWQgYSBoZWFkIGNvdWxkIGJlIGJlaGVhZGVkLCBhbmQgdGhhdCB5b3Ugd2VyZW4ndCB0byB0YWxrIG5vbnNlbnNlLlRo" + "ZSBRdWVlbidzIGFyZ3VtZW50IHdhcywgdGhhdCBpZiBzb21ldGhpbmcgd2Fzbid0IGRvbmUgYWJvdXQgaXQgaW4gbGVzcyB0aGFuIG5vIHRpbW" + "Ugc2hlJ2QgaGF2ZSBldmVyeWJvZHkgZXhlY3V0ZWQsIGFsbCByb3VuZC4gKEl0IHdhcyB0aGlzIGxhc3QgcmVtYXJrIHRoYXQgaGFkIG1hZGUg" + "dGhlIHdob2xlIHBhcnR5IGxvb2sgc28gZ3JhdmUgYW5kIGFueGlvdXMuKUFsaWNlIGNvdWxkIHRoaW5rIG9mIG5vdGhpbmcgZWxzZSB0byBzYX" + "kgYnV0ICdJdCBiZWxvbmdzIHRvIHRoZSBEdWNoZXNzOiB5b3UnZCBiZXR0ZXIgYXNrIGhlciBhYm91dCBpdC4nJ1NoZSdzIGluIHByaXNvbiwn" + "IHRoZSBRdWVlbiBzYWlkIHRvIHRoZSBleGVjdXRpb25lcjogJ2ZldGNoIGhlciBoZXJlLicgQW5kIHRoZSBleGVjdXRpb25lciB3ZW50IG9mZi" + "BsaWtlIGFuIGFycm93LlRoZSBDYXQncyBoZWFkIGJlZ2FuIGZhZGluZyBhd2F5IHRoZSBtb21lbnQgaGUgd2FzIGdvbmUsIGFuZCwgYnkgdGhl" + "IHRpbWUgaGUgaGFkIGNvbWUgYmFjayB3aXRoIHRoZSBEdWNoZXNzLCBpdCBoYWQgZW50aXJlbHkgZGlzYXBwZWFyZWQ7IHNvIHRoZSBLaW5nIG" + "FuZCB0aGUgZXhlY3V0aW9uZXIgcmFuIHdpbGRseSB1cCBhbmQgZG93biBsb29raW5nIGZvciBpdCwgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIHBh" + "cnR5IHdlbnQgYmFjayB0byB0aGUgZ2FtZS4="; + using it_base64_t = bai::base64_from_binary<bai::transform_width<std::string::const_iterator, 6, 8>>; + + auto writePaddChars = (3 - input.length() % 3) % 3; + std::string base64(it_base64_t(input.begin()), it_base64_t(input.end())); + base64.append(writePaddChars, '='); + assert(base64 == output); + return 0; +} +#elif 0 + +#include <memory> +#include <sstream> + +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/text_oarchive.hpp> +#include <boost/serialization/shared_ptr.hpp> + +struct S +{ + int i; + char c; + + template <class Archive> + void serialize(Archive & ar, const unsigned int version) + { + ar & i; + ar & c; + } +}; + +int main() +{ + const auto s0 = std::make_shared<S>(); + s0->i = 42; + s0->c = 'c'; + + std::stringstream ss; + + { + boost::archive::text_oarchive oa(ss); + oa << s0; + } + + std::shared_ptr<S> s1; + { + boost::archive::text_iarchive ia(ss); + ia >> s1; + } + + return 0; +} + +#elif 0 +#include <boost/archive/binary_iarchive.hpp> +#include <boost/serialization/vector.hpp> +#include <sstream> +#include <vector> + +void f() +{ + std::stringstream iss; + boost::archive::binary_iarchive ar(iss); + std::vector<int> out; + ar >> out; +} + +int main(int argc, char* argv[]) +{ + return 0; +} + +#include <boost/archive/xml_oarchive.hpp> +#include <boost/archive/xml_iarchive.hpp> +#include <boost/archive/detail/archive_serializer_map.hpp> +#include <boost/archive/impl/archive_serializer_map.ipp> +#include <boost/archive/impl/basic_xml_iarchive.ipp> +#include <boost/archive/impl/xml_iarchive_impl.ipp> +#include <boost/serialization/nvp.hpp> +#include <limits> +#include <fstream> + +class xml_iarchive_nan : +public boost::archive::xml_iarchive_impl<xml_iarchive_nan> +{ +protected: + friend class boost::archive::detail::interface_iarchive<xml_iarchive_nan>; + friend class boost::archive::detail::common_iarchive<xml_iarchive_nan>; + friend class boost::archive::basic_xml_iarchive<xml_iarchive_nan>; + friend class boost::archive::load_access; + + using boost::archive::xml_iarchive_impl<xml_iarchive_nan>::load; + void load(double & t) + { + char c='0'; + if(!is.fail()) + { + c=is.peek(); + if(c!='n') + { + boost::archive::xml_iarchive_impl<xml_iarchive_nan>::load(t); + } + else + { + char c1='0',c2='0'; + is.get(c).get(c1).get(c2); + if(is.fail()||(!((c=='n')&&(c1=='a')&&(c2=='n')))) + boost::serialization::throw_exception( + boost::archive::archive_exception( + boost::archive::archive_exception::input_stream_error)); + else + t=std::numeric_limits<double>::quiet_NaN(); + } + } + else + boost::serialization::throw_exception( + boost::archive::archive_exception(boost::archive::archive_exception::input_stream_error)); + } + +public: + xml_iarchive_nan(std::istream & is, unsigned int flags = 0) : + boost::archive::xml_iarchive_impl<xml_iarchive_nan>(is, flags) + {} + ~xml_iarchive_nan(){}; +}; + +BOOST_SERIALIZATION_REGISTER_ARCHIVE(xml_iarchive_nan) + +namespace boost +{ + namespace archive + { + template class detail::archive_serializer_map<xml_iarchive_nan>; + template class detail::interface_iarchive<xml_iarchive_nan>; + template class detail::common_iarchive<xml_iarchive_nan>; + template class basic_xml_iarchive<xml_iarchive_nan>; + template class xml_iarchive_impl<xml_iarchive_nan>; + + } +} + +int main(int argc, char** argv) +{ + double value=0.0; + std::ifstream ifile("./somefile.xml"); + xml_iarchive_nan ia(ifile); + ia>>BOOST_SERIALIZATION_NVP(value); +} + +#elif 1 +// submitted as https://github.com/boostorg/serialization/issues/154 +#include <boost/version.hpp> + +#include <boost/archive/text_iarchive.hpp> +#include <boost/archive/text_oarchive.hpp> + +#include <boost/serialization/vector.hpp> +#include <boost/serialization/string.hpp> + +#include <iostream> +#include <sstream> +#include <cassert> + +struct Tracked { + std::string x; + Tracked(std::string s) : x(s) {} + Tracked() : x("tracked"){} + template <class A> void serialize(A& ar, unsigned int ) { + ar & x; + } +}; + +struct Main { + Tracked t_before; + Tracked* t_pointer; + Tracked t_after; + Main() : t_before("before"), t_pointer(0), t_after("after") {} + template <class A> void serialize(A& ar, unsigned int ) { + ar + & t_before + & t_pointer + & t_after + ; + } +}; + +#define CHECK_EQUAL(X,Y) assert(X==Y) +#define REQUIRE_EQUAL(X,Y) CHECK_EQUAL(X,Y) +int main(int argc, char *argv[]) +{ + typedef std::vector<Main> Mains; + + std::stringstream ss; + + { + Mains ms; + ms.push_back( Main()); + ms.push_back( Main()); + ms.back().t_pointer = ms.front().t_pointer = new Tracked; + + REQUIRE_EQUAL( ms.size(), 2); + CHECK_EQUAL( ms[0].t_pointer, ms[1].t_pointer ); + CHECK_EQUAL( ms[0].t_pointer->x, "tracked" ); + + boost::archive::text_oarchive oa(ss); + oa << ms; + + delete ms.back().t_pointer; + } + + std::cout << ss.str() << std::endl; + + { + Mains ms; + boost::archive::text_iarchive ia(ss); + ia >> ms; + + REQUIRE_EQUAL( ms.size(), 2); + CHECK_EQUAL( ms[0].t_pointer, ms[1].t_pointer ); + CHECK_EQUAL( ms[0].t_pointer->x, "tracked" ); + } + + return 0; +} + +#else +int main(int argc, char* argv[]) +{ + return 0; +} +#endif diff --git a/src/boost/libs/serialization/test/testfile2 b/src/boost/libs/serialization/test/testfile2 Binary files differnew file mode 100644 index 000000000..c3fab9500 --- /dev/null +++ b/src/boost/libs/serialization/test/testfile2 diff --git a/src/boost/libs/serialization/test/text_archive.hpp b/src/boost/libs/serialization/test/text_archive.hpp new file mode 100644 index 000000000..8e98926cc --- /dev/null +++ b/src/boost/libs/serialization/test/text_archive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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. +// text_archive +#include <boost/archive/text_oarchive.hpp> +typedef boost::archive::text_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/text_iarchive.hpp> +typedef boost::archive::text_iarchive test_iarchive; +typedef std::ifstream test_istream; diff --git a/src/boost/libs/serialization/test/text_warchive.hpp b/src/boost/libs/serialization/test/text_warchive.hpp new file mode 100644 index 000000000..e556ef3ff --- /dev/null +++ b/src/boost/libs/serialization/test/text_warchive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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. +// text_warchive +#include <boost/archive/text_woarchive.hpp> +typedef boost::archive::text_woarchive test_oarchive; +typedef std::wofstream test_ostream; +#include <boost/archive/text_wiarchive.hpp> +typedef boost::archive::text_wiarchive test_iarchive; +typedef std::wifstream test_istream; diff --git a/src/boost/libs/serialization/test/xml_archive.hpp b/src/boost/libs/serialization/test/xml_archive.hpp new file mode 100644 index 000000000..a84bc18e4 --- /dev/null +++ b/src/boost/libs/serialization/test/xml_archive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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. +// xml_archive +#include <boost/archive/xml_oarchive.hpp> +typedef boost::archive::xml_oarchive test_oarchive; +typedef std::ofstream test_ostream; +#include <boost/archive/xml_iarchive.hpp> +typedef boost::archive::xml_iarchive test_iarchive; +typedef std::ifstream test_istream; diff --git a/src/boost/libs/serialization/test/xml_warchive.hpp b/src/boost/libs/serialization/test/xml_warchive.hpp new file mode 100644 index 000000000..ffdc45831 --- /dev/null +++ b/src/boost/libs/serialization/test/xml_warchive.hpp @@ -0,0 +1,13 @@ +// (C) Copyright 2002-4 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. +// xml_warchive +#include <boost/archive/xml_woarchive.hpp> +typedef boost::archive::xml_woarchive test_oarchive; +typedef std::wofstream test_ostream; +#include <boost/archive/xml_wiarchive.hpp> +typedef boost::archive::xml_wiarchive test_iarchive; +typedef std::wifstream test_istream; |