Ticket #4214: boost-serialization-version-collection.patch
File boost-serialization-version-collection.patch, 6.3 KB (added by , 12 years ago) |
---|
-
boost/serialization/slist.hpp
60 60 ar >> BOOST_SERIALIZATION_NVP(count); 61 61 if(std::size_t(0) == count) 62 62 return; 63 unsigned int v ;63 unsigned int v = 0; 64 64 if(3 < ar.get_library_version()){ 65 ar >> boost::serialization::make_nvp("item_version", v); 65 boost::archive::version_type item_version(0); 66 ar >> BOOST_SERIALIZATION_NVP(item_version); 67 v = item_version.t; 66 68 } 67 69 boost::serialization::detail::stack_construct<Archive, U> u(ar, v); 68 70 ar >> boost::serialization::make_nvp("item", u.reference()); -
boost/serialization/hash_collections_save_imp.hpp
22 22 #include <boost/serialization/nvp.hpp> 23 23 #include <boost/serialization/serialization.hpp> 24 24 #include <boost/serialization/version.hpp> 25 #include <boost/serialization/collection_size_type.hpp> 25 26 26 27 namespace boost{ 27 28 namespace serialization { … … 35 36 inline void save_hash_collection(Archive & ar, const Container &s) 36 37 { 37 38 // record number of elements 38 unsigned int count = s.size(); 39 unsigned int c = s.size(); 40 collection_size_type count(c); 39 41 ar << BOOST_SERIALIZATION_NVP(count); 40 42 // make sure the target type is registered so we can retrieve 41 43 // the version when we load 42 44 if(3 < ar.get_library_version()){ 43 const unsigned int bucket_count = s.bucket_count();45 const collection_size_type bucket_count(s.bucket_count()); 44 46 ar << BOOST_SERIALIZATION_NVP(bucket_count); 45 const unsigned int item_version = version<BOOST_DEDUCED_TYPENAME Container::value_type>::value; 47 const boost::archive::version_type item_version( 48 version<BOOST_DEDUCED_TYPENAME Container::value_type>::value); 46 49 ar << BOOST_SERIALIZATION_NVP(item_version); 47 50 } 48 51 BOOST_DEDUCED_TYPENAME Container::const_iterator it = s.begin(); 49 while(c ount-- > 0){52 while(c-- > 0){ 50 53 // note borland emits a no-op without the explicit namespace 51 54 boost::serialization::save_construct_data_adl( 52 55 ar, -
boost/serialization/collections_load_imp.hpp
139 139 s.clear(); 140 140 // retrieve number of elements 141 141 collection_size_type count; 142 unsigned int item_version ;142 unsigned int item_version_val = 0; 143 143 ar >> BOOST_SERIALIZATION_NVP(count); 144 if(3 < ar.get_library_version()) 145 ar >> BOOST_SERIALIZATION_NVP(item_version); 146 else 147 item_version = 0; 144 if(3 < ar.get_library_version()) { 145 boost::archive::version_type item_version(0); 146 ar >> BOOST_SERIALIZATION_NVP(item_version); 147 item_version_val = item_version.t; 148 } 148 149 R rx; 149 150 rx(s, count); 150 151 std::size_t c = count; … … 152 153 BOOST_DEDUCED_TYPENAME Container::iterator hint; 153 154 hint = s.begin(); 154 155 while(c-- > 0){ 155 hint = ifunc(ar, s, item_version , hint);156 hint = ifunc(ar, s, item_version_val, hint); 156 157 } 157 158 } 158 159 -
boost/serialization/collections_save_imp.hpp
41 41 // make sure the target type is registered so we can retrieve 42 42 // the version when we load 43 43 if(3 < ar.get_library_version()){ 44 const unsigned int item_version =version<44 const boost::archive::version_type item_version(version< 45 45 BOOST_DEDUCED_TYPENAME Container::value_type 46 >::value ;47 46 >::value); 47 ar << BOOST_SERIALIZATION_NVP(item_version); 48 48 } 49 49 BOOST_DEDUCED_TYPENAME Container::const_iterator it = s.begin(); 50 50 collection_size_type c=count; -
boost/serialization/optional.hpp
38 38 ar << boost::serialization::make_nvp("initialized", tflag); 39 39 if (tflag){ 40 40 if(3 < ar.get_library_version()){ 41 const int v = version<T>::value;42 41 const boost::archive::version_type v(version<T>::value); 42 ar << boost::serialization::make_nvp("item_version", v); 43 43 } 44 44 ar << boost::serialization::make_nvp("value", *t); 45 45 } … … 56 56 if (tflag){ 57 57 unsigned int v = 0; 58 58 if(3 < ar.get_library_version()){ 59 ar >> boost::serialization::make_nvp("item_version", v); 59 boost::archive::version_type vt(v); 60 ar >> boost::serialization::make_nvp("item_version", vt); 61 v = vt.t; 60 62 } 61 63 detail::stack_construct<Archive, T> aux(ar, v); 62 64 ar >> boost::serialization::make_nvp("value", aux.reference()); -
boost/serialization/hash_collections_load_imp.hpp
21 21 #include <boost/config.hpp> 22 22 #include <boost/serialization/nvp.hpp> 23 23 //#include <boost/serialization/collections_load_imp.hpp> 24 #include <boost/serialization/collection_size_type.hpp> 24 25 25 26 namespace boost{ 26 27 namespace serialization { … … 34 35 { 35 36 s.clear(); 36 37 // retrieve number of elements 37 unsigned intcount;38 unsigned intitem_version(0);39 unsigned int bucket_count;;38 collection_size_type count; 39 boost::archive::version_type item_version(0); 40 collection_size_type bucket_count; 40 41 ar >> BOOST_SERIALIZATION_NVP(count); 41 42 if(3 < ar.get_library_version()){ 42 43 ar >> BOOST_SERIALIZATION_NVP(bucket_count);