1 #ifndef _Serialize_h_
2 #define _Serialize_h_
3 
4 #include <boost/archive/binary_iarchive.hpp>
5 #include <boost/archive/binary_oarchive.hpp>
6 #include <boost/archive/xml_iarchive.hpp>
7 #include <boost/archive/xml_oarchive.hpp>
8 
9 #include <map>
10 
11 #include "Export.h"
12 
13 class OrderSet;
14 class Universe;
15 class UniverseObject;
16 
17 typedef boost::archive::binary_iarchive freeorion_bin_iarchive;
18 typedef boost::archive::binary_oarchive freeorion_bin_oarchive;
19 typedef boost::archive::xml_iarchive freeorion_xml_iarchive;
20 typedef boost::archive::xml_oarchive freeorion_xml_oarchive;
21 
22 //! @warning
23 //!     Do not try to serialize types that contain longs, since longs are
24 //!     different sizes on 32- and 64-bit architectures.  Replace your longs
25 //!     with long longs for portability.  It would seem that short of writing
26 //!     some Boost.Serialization archive that handles longs portably, we cannot
27 //!     transmit longs across machines with different bit-size architectures.
28 
29 //! Serialize @p universe to output archive @p oa.
30 template <typename Archive>
31 FO_COMMON_API void Serialize(Archive& oa, const Universe& universe);
32 
33 //! Serialize @p object_map to output archive @p oa.
34 template <typename Archive>
35 void Serialize(Archive& oa, const std::map<int, std::shared_ptr<UniverseObject>>& objects);
36 
37 //! Serialize @p order_set to output archive @p oa.
38 template <typename Archive>
39 void Serialize(Archive& oa, const OrderSet& order_set);
40 
41 //! Deserialize @p universe from input archive @p ia.
42 template <typename Archive>
43 FO_COMMON_API void Deserialize(Archive& ia, Universe& universe);
44 
45 //! Deserialize @p object_map from input archive @p ia.
46 template <typename Archive>
47 void Deserialize(Archive& ia, std::map<int, std::shared_ptr<UniverseObject>>& objects);
48 
49 //! Deserialize @p order_set from input archive @p ia.
50 template <typename Archive>
51 void Deserialize(Archive& ia, OrderSet& order_set);
52 
53 #endif // _Serialize_h_
54