Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:11

0001 #ifndef CondFormats_External_Timestamp_H
0002 #define CondFormats_External_Timestamp_H
0003 
0004 #include <boost/serialization/base_object.hpp>
0005 #include <boost/serialization/nvp.hpp>
0006 #include <boost/serialization/split_free.hpp>
0007 
0008 // std::vector used in DataFormats/EcalDetId/interface/EcalContainer.h
0009 #include <boost/serialization/vector.hpp>
0010 #include <boost/serialization/string.hpp>
0011 #include <boost/serialization/map.hpp>
0012 
0013 #include "DataFormats/Provenance/interface/Timestamp.h"
0014 
0015 namespace boost {
0016   namespace serialization {
0017 
0018     /*
0019  * Note regarding object tracking: all autos used here
0020  * must resolve to untracked types, since we use local
0021  * variables in the stack which could end up with the same
0022  * address. For the moment, all types resolved by auto here
0023  * are primitive types, which are untracked by default
0024  * by Boost Serialization.
0025  */
0026 
0027     // DataFormats/Provenance/interface/Timestamp.h
0028     template <class Archive>
0029     void save(Archive& ar, const edm::Timestamp& obj, const unsigned int) {
0030       auto time_ = obj.value();
0031       ar& BOOST_SERIALIZATION_NVP(time_);
0032     }
0033 
0034     template <class Archive>
0035     void load(Archive& ar, edm::Timestamp& obj, const unsigned int) {
0036       decltype(obj.value()) time_;
0037       ar& BOOST_SERIALIZATION_NVP(time_);
0038       obj = edm::Timestamp(time_);
0039     }
0040 
0041     template <class Archive>
0042     void serialize(Archive& ar, edm::Timestamp& obj, const unsigned int v) {
0043       split_free(ar, obj, v);
0044     }
0045 
0046   }  // namespace serialization
0047 }  // namespace boost
0048 
0049 #endif