1 #ifndef CondCore_Utilities_Payload2XMLModule_h 2 #define CondCore_Utilities_Payload2XMLModule_h 7 #include <boost/python.hpp> 8 #include "boost/archive/xml_oarchive.hpp" 12 #define XML_CONVERTER_NAME(CLASS_NAME) (std::string(#CLASS_NAME) + "2xml").c_str() 14 #define PAYLOAD_2XML_MODULE(MODULE_NAME) BOOST_PYTHON_MODULE(MODULE_NAME) 16 #define PAYLOAD_2XML_CLASS(CLASS_NAME) \ 17 boost::python::class_<Payload2xml<CLASS_NAME> >(XML_CONVERTER_NAME(CLASS_NAME), boost::python::init<>()) \ 18 .def("write", &Payload2xml<CLASS_NAME>::write); 22 template <
typename PayloadType>
29 std::unique_ptr<PayloadType>
payload;
30 std::stringbuf sdataBuf;
31 sdataBuf.pubsetbuf(const_cast<char *>(payloadData.c_str()), payloadData.size());
33 std::istream inBuffer(&sdataBuf);
34 eos::portable_iarchive ia(inBuffer);
35 payload.reset(
new PayloadType);
39 std::ostringstream outBuffer;
41 boost::archive::xml_oarchive xmlResult(outBuffer);
42 xmlResult << boost::serialization::make_nvp(
"cmsCondPayload", *payload);
44 return outBuffer.str();