Back to home page

EIC code displayed by LXR

 
 

    


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 // MS compatible compilers support #pragma once
0005 #if defined(_MSC_VER)
0006 # pragma once
0007 #endif
0008 
0009 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
0010 // basic_iarchive.hpp:
0011 
0012 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
0013 // Use, modification and distribution is subject to the Boost Software
0014 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
0015 // http://www.boost.org/LICENSE_1_0.txt)
0016 
0017 //  See http://www.boost.org for updates, documentation, and revision history.
0018 
0019 // can't use this - much as I'd like to as borland doesn't support it
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 } // namespace serialization
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 // class basic_iarchive - read serialized objects from a input stream
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     // hide implementation of this class to minimize header conclusion
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     // some msvc versions require that the following function be public
0067     // otherwise it should really protected.
0068     virtual BOOST_ARCHIVE_DECL ~basic_iarchive();
0069     // note: NOT part of the public API.
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     // real public API starts here
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 } // namespace detail
0100 } // namespace archive
0101 } // namespace boost
0102 
0103 #include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
0104 
0105 #endif //BOOST_ARCHIVE_DETAIL_BASIC_IARCHIVE_HPP