1 /* Copyright 2006-2009 Brad King, Chuck Stewart
2 Distributed under the Boost Software License, Version 1.0.
3 (See accompanying file rgtl_license_1_0.txt or copy at
4 http://www.boost.org/LICENSE_1_0.txt) */
5 #ifndef rgtl_serialize_access_h
6 #define rgtl_serialize_access_h
7
8 //:
9 // \file
10 // \brief Serialization helper class to access private methods.
11 // \author Brad King
12 // \date February 2008
13
14 //: Helper class to call private serialization members.
15 // See rgtl_serialize.txt for serialization interface details.
16 class rgtl_serialize_access
17 {
18 public:
19 template <typename Serializer, typename T>
serialize(Serializer & rsr,T & x)20 static void serialize(Serializer& rsr, T& x)
21 {
22 x.serialize(rsr);
23 }
24 template <typename Serializer, typename T>
serialize_save(Serializer & rsr,T & x)25 static void serialize_save(Serializer& rsr, T& x)
26 {
27 x.serialize_save(rsr);
28 }
29 template <typename Serializer, typename T>
serialize_load(Serializer & rsr,T & x)30 static void serialize_load(Serializer& rsr, T& x)
31 {
32 x.serialize_load(rsr);
33 }
34 };
35
36 //: Helper function to call private serialize() members.
37 template <typename Serializer, typename T>
rgtl_serialize(Serializer & rsr,T & x)38 inline void rgtl_serialize(Serializer& rsr, T& x)
39 {
40 rgtl_serialize_access::serialize(rsr, x);
41 }
42
43 //: Helper function to call private serialize_save() members.
44 template <typename Serializer, typename T>
rgtl_serialize_save(Serializer & rsr,T & x)45 inline void rgtl_serialize_save(Serializer& rsr, T& x)
46 {
47 rgtl_serialize_access::serialize_save(rsr, x);
48 }
49
50 //: Helper function to call private serialize_load() members.
51 template <typename Serializer, typename T>
rgtl_serialize_load(Serializer & rsr,T & x)52 inline void rgtl_serialize_load(Serializer& rsr, T& x)
53 {
54 rgtl_serialize_access::serialize_load(rsr, x);
55 }
56
57 #endif
58