File indexing completed on 2025-01-18 09:28:27
0001 #ifndef BOOST_ARCHIVE_DETAIL_BASIC_IARCHIVE_HPP
0002 #define BOOST_ARCHIVE_DETAIL_BASIC_IARCHIVE_HPP
0003
0004
0005 #if defined(_MSC_VER)
0006 # pragma once
0007 #endif
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <boost/config.hpp>
0022 #include <boost/noncopyable.hpp>
0023 #include <boost/scoped_ptr.hpp>
0024
0025 #include <boost/serialization/tracking_enum.hpp>
0026 #include <boost/archive/basic_archive.hpp>
0027 #include <boost/archive/detail/decl.hpp>
0028 #include <boost/archive/detail/helper_collection.hpp>
0029 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
0030
0031 namespace boost {
0032 namespace serialization {
0033 class extended_type_info;
0034 }
0035
0036 namespace archive {
0037 namespace detail {
0038
0039 class basic_iarchive_impl;
0040 class basic_iserializer;
0041 class basic_pointer_iserializer;
0042
0043
0044
0045 class BOOST_SYMBOL_VISIBLE basic_iarchive :
0046 private boost::noncopyable,
0047 public boost::archive::detail::helper_collection
0048 {
0049 friend class basic_iarchive_impl;
0050
0051 boost::scoped_ptr<basic_iarchive_impl> pimpl;
0052
0053 virtual void vload(version_type &t) = 0;
0054 virtual void vload(object_id_type &t) = 0;
0055 virtual void vload(class_id_type &t) = 0;
0056 virtual void vload(class_id_optional_type &t) = 0;
0057 virtual void vload(class_name_type &t) = 0;
0058 virtual void vload(tracking_type &t) = 0;
0059 protected:
0060 BOOST_ARCHIVE_DECL basic_iarchive(unsigned int flags);
0061 boost::archive::detail::helper_collection &
0062 get_helper_collection(){
0063 return *this;
0064 }
0065 public:
0066
0067
0068 virtual BOOST_ARCHIVE_DECL ~basic_iarchive();
0069
0070 BOOST_ARCHIVE_DECL void next_object_pointer(void *t);
0071 BOOST_ARCHIVE_DECL void register_basic_serializer(
0072 const basic_iserializer & bis
0073 );
0074 BOOST_ARCHIVE_DECL void load_object(
0075 void *t,
0076 const basic_iserializer & bis
0077 );
0078 BOOST_ARCHIVE_DECL const basic_pointer_iserializer *
0079 load_pointer(
0080 void * & t,
0081 const basic_pointer_iserializer * bpis_ptr,
0082 const basic_pointer_iserializer * (*finder)(
0083 const boost::serialization::extended_type_info & eti
0084 )
0085 );
0086
0087 BOOST_ARCHIVE_DECL void
0088 set_library_version(boost::serialization::library_version_type archive_library_version);
0089 BOOST_ARCHIVE_DECL boost::serialization::library_version_type
0090 get_library_version() const;
0091 BOOST_ARCHIVE_DECL unsigned int
0092 get_flags() const;
0093 BOOST_ARCHIVE_DECL void
0094 reset_object_address(const void * new_address, const void * old_address);
0095 BOOST_ARCHIVE_DECL void
0096 delete_created_pointers();
0097 };
0098
0099 }
0100 }
0101 }
0102
0103 #include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
0104
0105 #endif