Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/archive/detail/common_iarchive.hpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 16 years ago

updated boost from 1_33_1 to 1_34_1

File size: 2.2 KB
Line 
1#ifndef BOOST_ARCHIVE_DETAIL_COMMON_IARCHIVE_HPP
2#define BOOST_ARCHIVE_DETAIL_COMMON_IARCHIVE_HPP
3
4// MS compatible compilers support #pragma once
5#if defined(_MSC_VER) && (_MSC_VER >= 1020)
6# pragma once
7#endif
8
9/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
10// common_iarchive.hpp
11
12// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
13// Use, modification and distribution is subject to the Boost Software
14// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
15// http://www.boost.org/LICENSE_1_0.txt)
16
17//  See http://www.boost.org for updates, documentation, and revision history.
18
19#include <boost/archive/detail/basic_iarchive.hpp>
20#include <boost/archive/detail/interface_iarchive.hpp>
21#include <boost/archive/detail/iserializer.hpp>
22#include <boost/pfto.hpp>
23
24namespace boost {
25namespace archive {
26namespace detail {
27
28// note: referred to as Curiously Recurring Template Patter (CRTP)
29template<class Archive>
30class common_iarchive : 
31    public basic_iarchive,
32    public interface_iarchive<Archive>
33{
34private:
35    virtual void vload(version_type & t){
36        * this->This() >> t; 
37    }
38    virtual void vload(object_id_type & t){
39        * this->This() >> t;
40    }
41    virtual void vload(class_id_type & t){
42        * this->This() >> t;
43    }
44    virtual void vload(class_id_optional_type & t){
45        * this->This() >> t;
46    }
47    virtual void vload(tracking_type & t){
48        * this->This() >> t;
49    }
50    virtual void vload(class_name_type &s){
51        * this->This() >> s;
52    }
53protected:
54    // default processing - invoke serialization library
55    template<class T>
56    void load_override(T & t, BOOST_PFTO int){
57        archive::load(* this->This(), t);
58    }
59    // default implementations of functions which emit start/end tags for
60    // archive types that require them.
61    void load_start(const char *name){}
62    void load_end(const char *name){}
63    // default archive initialization
64    common_iarchive(unsigned int flags) : 
65        basic_iarchive(flags),
66        interface_iarchive<Archive>()
67    {}
68};
69
70} // namespace detail
71} // namespace archive
72} // namespace boost
73
74#endif // BOOST_ARCHIVE_DETAIL_COMMON_IARCHIVE_HPP
75
Note: See TracBrowser for help on using the repository browser.