Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / histogram / test / utility_serialization.hpp
index 734fd54..735add6 100644 (file)
@@ -9,8 +9,9 @@
 
 #include <boost/archive/xml_iarchive.hpp>
 #include <boost/archive/xml_oarchive.hpp>
+#include <boost/assert.hpp>
 #include <boost/config.hpp>
-#include <cassert>
+#include <boost/core/nvp.hpp>
 #include <fstream>
 #include <iostream>
 #include <string>
@@ -30,16 +31,23 @@ std::string join(const char* a, const char* b) {
 template <class T>
 void load_xml(const std::string& filename, T& t) {
   std::ifstream ifs(filename);
-  assert(ifs.is_open());
+  BOOST_ASSERT(ifs.is_open());
+  // manually skip XML comments at the beginning of the stream, because of
+  // https://github.com/boostorg/serialization/issues/169
+  char line[128];
+  do {
+    ifs.getline(line, 128);
+    BOOST_ASSERT(std::strlen(line) < 127);
+  } while (!ifs.fail() && !ifs.eof() && std::strstr(line, "-->") == nullptr);
   boost::archive::xml_iarchive ia(ifs);
-  ia >> boost::serialization::make_nvp("item", t);
+  ia >> boost::make_nvp("item", t);
 }
 
 template <class T>
 void print_xml(const std::string& filename, const T& t) {
   std::cout << filename << "\n";
   boost::archive::xml_oarchive oa(std::cout);
-  oa << boost::serialization::make_nvp("item", t);
+  oa << boost::make_nvp("item", t);
   std::cout << std::flush;
 }