/usr/include/boost/archive
NameSizeModeActions
detail/-0755rm
impl/-0755rm
iterators/-0755rm
archive_exception.hpp41380644editdlrm
basic_archive.hpp84260644editdlrm
basic_binary_iarchive.hpp77470644editdlrm
basic_binary_iprimitive.hpp63760644editdlrm
basic_binary_oarchive.hpp62830644editdlrm
basic_binary_oprimitive.hpp61610644editdlrm
basic_streambuf_locale_saver.hpp28530644editdlrm
basic_text_iarchive.hpp30090644editdlrm
basic_text_iprimitive.hpp40100644editdlrm
basic_text_oarchive.hpp34120644editdlrm
basic_text_oprimitive.hpp72790644editdlrm
basic_xml_archive.hpp16340644editdlrm
basic_xml_iarchive.hpp40180644editdlrm
basic_xml_oarchive.hpp43340644editdlrm
binary_iarchive.hpp20220644editdlrm
binary_iarchive_impl.hpp29300644editdlrm
binary_oarchive.hpp20190644editdlrm
binary_oarchive_impl.hpp29590644editdlrm
binary_wiarchive.hpp17010644editdlrm
binary_woarchive.hpp18870644editdlrm
codecvt_null.hpp33070644editdlrm
dinkumware.hpp53680644editdlrm
polymorphic_binary_iarchive.hpp15110644editdlrm
polymorphic_binary_oarchive.hpp13750644editdlrm
polymorphic_iarchive.hpp52570644editdlrm
polymorphic_oarchive.hpp48060644editdlrm
polymorphic_text_iarchive.hpp14890644editdlrm
polymorphic_text_oarchive.hpp13530644editdlrm
polymorphic_text_wiarchive.hpp16270644editdlrm
polymorphic_text_woarchive.hpp14900644editdlrm
polymorphic_xml_iarchive.hpp14780644editdlrm
polymorphic_xml_oarchive.hpp13410644editdlrm
polymorphic_xml_wiarchive.hpp14800644editdlrm
polymorphic_xml_woarchive.hpp14800644editdlrm
text_iarchive.hpp35650644editdlrm
text_oarchive.hpp35930644editdlrm
text_wiarchive.hpp37180644editdlrm
text_woarchive.hpp44530644editdlrm
tmpdir.hpp11960644editdlrm
wcslen.hpp13170644editdlrm
xml_archive_exception.hpp17870644editdlrm
xml_iarchive.hpp37280644editdlrm
xml_oarchive.hpp37350644editdlrm
xml_wiarchive.hpp38950644editdlrm
xml_woarchive.hpp37580644editdlrm
Edit: /usr/include/boost/archive/basic_binary_iarchive.hpp (7747B)
#ifndef BOOST_ARCHIVE_BASIC_BINARY_IARCHIVE_HPP #define BOOST_ARCHIVE_BASIC_BINARY_IARCHIVE_HPP // MS compatible compilers support #pragma once #if defined(_MSC_VER) # pragma once #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // basic_binary_iarchive.hpp // // archives stored as native binary - this should be the fastest way // to archive the state of a group of obects. It makes no attempt to // convert to any canonical form. // IN GENERAL, ARCHIVES CREATED WITH THIS CLASS WILL NOT BE READABLE // ON PLATFORM APART FROM THE ONE THEY ARE CREATED ON // (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 #include #include #include #include #include #include #include #include #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4511 4512) #endif #include // must be the last header namespace boost { namespace archive { namespace detail { template class interface_iarchive; } // namespace detail ///////////////////////////////////////////////////////////////////////// // class basic_binary_iarchive - read serialized objects from a input binary stream template class BOOST_SYMBOL_VISIBLE basic_binary_iarchive : public detail::common_iarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else protected: #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) // for some inexplicable reason insertion of "class" generates compile erro // on msvc 7.1 friend detail::interface_iarchive; #else friend class detail::interface_iarchive; #endif #endif // intermediate level to support override of operators // fot templates in the absence of partial function // template ordering. If we get here pass to base class // note extra nonsense to sneak it pass the borland compiers typedef detail::common_iarchive detail_common_iarchive; template void load_override(T & t){ this->detail_common_iarchive::load_override(t); } // include these to trap a change in binary format which // isn't specifically handled // upto 32K classes BOOST_STATIC_ASSERT(sizeof(class_id_type) == sizeof(int_least16_t)); BOOST_STATIC_ASSERT(sizeof(class_id_reference_type) == sizeof(int_least16_t)); // upto 2G objects BOOST_STATIC_ASSERT(sizeof(object_id_type) == sizeof(uint_least32_t)); BOOST_STATIC_ASSERT(sizeof(object_reference_type) == sizeof(uint_least32_t)); // binary files don't include the optional information void load_override(class_id_optional_type & /* t */){} void load_override(tracking_type & t, int /*version*/){ boost::serialization::library_version_type lv = this->get_library_version(); if(boost::serialization::library_version_type(6) < lv){ int_least8_t x=0; * this->This() >> x; t = boost::archive::tracking_type(x); } else{ bool x=0; * this->This() >> x; t = boost::archive::tracking_type(x); } } void load_override(class_id_type & t){ boost::serialization::library_version_type lv = this->get_library_version(); /* * library versions: * boost 1.39 -> 5 * boost 1.43 -> 7 * boost 1.47 -> 9 * * * 1) in boost 1.43 and inferior, class_id_type is always a 16bit value, with no check on the library version * --> this means all archives with version v <= 7 are written with a 16bit class_id_type * 2) in boost 1.44 this load_override has disappeared (and thus boost 1.44 is not backward compatible at all !!) * 3) recent boosts reintroduced load_override with a test on the version : * - v > 7 : this->detail_common_iarchive::load_override(t, version) * - v > 6 : 16bit * - other : 32bit * --> which is obviously incorrect, see point 1 * * the fix here decodes class_id_type on 16bit for all v <= 7, which seems to be the correct behaviour ... */ if(boost::serialization::library_version_type (7) < lv){ this->detail_common_iarchive::load_override(t); } else{ int_least16_t x=0; * this->This() >> x; t = boost::archive::class_id_type(x); } } void load_override(class_id_reference_type & t){ load_override(static_cast(t)); } void load_override(version_type & t){ boost::serialization::library_version_type lv = this->get_library_version(); if(boost::serialization::library_version_type(7) < lv){ this->detail_common_iarchive::load_override(t); } else if(boost::serialization::library_version_type(6) < lv){ uint_least8_t x=0; * this->This() >> x; t = boost::archive::version_type(x); } else if(boost::serialization::library_version_type(5) < lv){ uint_least16_t x=0; * this->This() >> x; t = boost::archive::version_type(x); } else if(boost::serialization::library_version_type(2) < lv){ // upto 255 versions unsigned char x=0; * this->This() >> x; t = version_type(x); } else{ unsigned int x=0; * this->This() >> x; t = boost::archive::version_type(x); } } void load_override(boost::serialization::item_version_type & t){ boost::serialization::library_version_type lv = this->get_library_version(); // if(boost::serialization::library_version_type(7) < lvt){ if(boost::serialization::library_version_type(6) < lv){ this->detail_common_iarchive::load_override(t); } else if(boost::serialization::library_version_type(6) < lv){ uint_least16_t x=0; * this->This() >> x; t = boost::serialization::item_version_type(x); } else{ unsigned int x=0; * this->This() >> x; t = boost::serialization::item_version_type(x); } } void load_override(serialization::collection_size_type & t){ if(boost::serialization::library_version_type(5) < this->get_library_version()){ this->detail_common_iarchive::load_override(t); } else{ unsigned int x=0; * this->This() >> x; t = serialization::collection_size_type(x); } } BOOST_ARCHIVE_OR_WARCHIVE_DECL void load_override(class_name_type & t); BOOST_ARCHIVE_OR_WARCHIVE_DECL void init(); basic_binary_iarchive(unsigned int flags) : detail::common_iarchive(flags) {} }; } // namespace archive } // namespace boost #ifdef BOOST_MSVC #pragma warning(pop) #endif #include // pops abi_suffix.hpp pragmas #endif // BOOST_ARCHIVE_BASIC_BINARY_IARCHIVE_HPP