Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/archive/detail/common_oarchive.hpp @ 47

Last change on this file since 47 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_OARCHIVE_HPP
2#define BOOST_ARCHIVE_DETAIL_COMMON_OARCHIVE_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_oarchive.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_oarchive.hpp>
20#include <boost/archive/detail/interface_oarchive.hpp>
21#include <boost/archive/detail/oserializer.hpp>
22
23namespace boost {
24namespace archive {
25namespace detail {
26
27// note: referred to as Curiously Recurring Template Patter (CRTP)
28template<class Archive>
29class common_oarchive : 
30    public basic_oarchive,
31    public interface_oarchive<Archive>
32{
33private:
34    virtual void vsave(const version_type t){
35        * this->This() << t;
36    }
37    virtual void vsave(const object_id_type t){
38        * this->This() << t;
39    }
40    virtual void vsave(const object_reference_type t){
41        * this->This() << t;
42    }
43    virtual void vsave(const class_id_type t){
44        * this->This() << t;
45    }
46    virtual void vsave(const class_id_reference_type t){
47        * this->This() << t;
48    }
49    virtual void vsave(const class_id_optional_type t){
50        * this->This() << t;
51    }
52    virtual void vsave(const class_name_type & t){
53        * this->This() << t;
54    }
55    virtual void vsave(const tracking_type t){
56        * this->This() << t;
57    }
58protected:
59    // default processing - invoke serialization library
60    template<class T>
61    void save_override(T & t, BOOST_PFTO int){
62        archive::save(* this->This(), t);
63    }
64
65    void save_start(const char *name){}
66    void save_end(const char *name){}
67    common_oarchive(unsigned int flags) : 
68        basic_oarchive(flags),
69        interface_oarchive<Archive>()
70    {}
71};
72
73} // namespace detail
74} // namespace archive
75} // namespace boost
76
77#endif // BOOST_ARCHIVE_DETAIL_COMMON_OARCHIVE_HPP
Note: See TracBrowser for help on using the repository browser.