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