indigoX
serialise.hpp
Go to the documentation of this file.
1 #ifndef INDIGOX_UTILS_SERIALISE_HPP
2 #define INDIGOX_UTILS_SERIALISE_HPP
3 
4 #define CEREAL_SERIALIZE_FUNCTION_NAME serialise
5 
6 #include "fwd_declares.hpp"
7 #include <cereal/access.hpp>
8 #include <cereal/archives/json.hpp>
9 #include <cereal/archives/portable_binary.hpp>
10 #include <cereal/cereal.hpp>
11 #include <cereal/types/array.hpp>
12 #include <cereal/types/bitset.hpp>
13 #include <cereal/types/boost_dynamic_bitset.hpp>
14 #include <cereal/types/eastl_bitset.hpp>
15 #include <cereal/types/eigen.hpp>
16 #include <cereal/types/map.hpp>
17 #include <cereal/types/memory.hpp>
18 #include <cereal/types/utility.hpp>
19 #include <cereal/types/vector.hpp>
20 
21 #include <type_traits>
22 
23 namespace stdx {
24  struct typeless {
25  typeless() = delete;
26  typeless(const typeless &) = delete;
27  typeless &operator=(const typeless &) = delete;
28  ~typeless() = delete;
29  };
30 } // namespace stdx
31 
32 #define __hr_out cereal::JSONOutputArchive
33 #define __hr_in cereal::JSONInputArchive
34 #define __cr_out cereal::PortableBinaryOutputArchive
35 #define __cr_in cereal::PortableBinaryInputArchive
36 
37 #define __ix_serialise(class_name, in_archive_t, out_archive_t) \
38  template void class_name::serialise<out_archive_t>(out_archive_t &, \
39  const uint32_t); \
40  template void class_name::serialise<in_archive_t>(in_archive_t &, \
41  const uint32_t);
42 
43 #define __ix_serialise_split(class_name, in_archive_t, out_archive_t) \
44  template void class_name::save<out_archive_t>(out_archive_t &, \
45  const uint32_t) const; \
46  template void class_name::load<in_archive_t>(in_archive_t &, const uint32_t);
47 
48 #define __ix_serialise_construct(class_name, in_archive_t, out_archive_t) \
49  template void class_name::save<out_archive_t>(out_archive_t &, \
50  const uint32_t) const; \
51  template void class_name::load_and_construct<in_archive_t>( \
52  in_archive_t &, cereal::construct<class_name> &, const uint32_t);
53 
54 #define INDIGOX_SERIALISE(class_name) \
55  __ix_serialise(class_name, __hr_in, __hr_out) \
56  __ix_serialise(class_name, __cr_in, __cr_out)
57 
58 #define INDIGOX_SERIALISE_SPLIT(class_name) \
59  __ix_serialise_split(class_name, __hr_in, __hr_out) \
60  __ix_serialise_split(class_name, __cr_in, __cr_out)
61 
62 #define INDIGOX_SERIALISE_CONSTRUCT(class_name) \
63  __ix_serialise_construct(class_name, __hr_in, __hr_out) \
64  __ix_serialise_construct(class_name, __cr_in, __cr_out)
65 
66 #define INDIGOX_SERIAL_NVP(name, value) cereal::make_nvp<Archive>(name, value)
67 
68 #define INDIGOX_SERIALISE_VERSION(class_name, version) \
69  CEREAL_CLASS_VERSION(class_name, version);
70 
71 #define INDIGOX_IS_OUTPUT_ARCHIVE(archive_t) \
72  std::is_base_of<cereal::detail::OutputArchiveBase, archive_t>::value
73 
74 #define INDIGOX_IS_INPUT_ARCHIVE(archive_t) \
75  std::is_base_of<cereal::detail::InputArchiveBase, archive_t>::value
76 
77 #define INDIGOX_IS_HUMAN_READABLE(archive_t) \
78  cereal::traits::is_text_archive<archive_t>::value
79 
80 #endif /* INDIGOX_UTILS_SERIALISE_HPP */
typeless()=delete
typeless & operator=(const typeless &)=delete
Definition: serialise.hpp:24
~typeless()=delete
Definition: quad.hpp:9