diff --git a/binary_archive/tuple.hpp b/binary_archive/tuple.hpp new file mode 100644 index 00000000..e7692fbd --- /dev/null +++ b/binary_archive/tuple.hpp @@ -0,0 +1,33 @@ +#ifndef CEREAL_BINARY_ARCHIVE_TUPLE_HPP_ +#define CEREAL_BINARY_ARCHIVE_TUPLE_HPP_ + +#include +#include + +namespace cereal +{ + namespace tuple_detail + { + // unwinds a tuple to save it + template inline + void serialize( Archive & ar, std::tuple & tuple ) + { + ar & std::get( tuple ); + serialize( ar, tuple ); + } + + // Zero height specialization - nothing to do here + template inline + void serialize<0, Types...>( Archive & ar, std::tuple & tuple ) + { } + } + + //! Serializing for std::tuple to binary + template inline + void serialize( Archive & ar, std::tuple & tuple ) + { + tuple_size::serialize>>( ar, tuple ); + } +} // namespace cereal + +#endif // CEREAL_BINARY_ARCHIVE_TUPLE_HPP_ diff --git a/binary_archive/utility.hpp b/binary_archive/utility.hpp new file mode 100644 index 00000000..b0a9883d --- /dev/null +++ b/binary_archive/utility.hpp @@ -0,0 +1,18 @@ +#ifndef CEREAL_BINARY_ARCHIVE_UTILITY_HPP_ +#define CEREAL_BINARY_ARCHIVE_UTILITY_HPP_ + +#include +#include + +namespace cereal +{ + //! Serializing for std::pair to binary + template inline + void serialize( Archive & ar, std::pair & pair ) + { + ar & pair.first; + ar & pair.second; + } +} // namespace cereal + +#endif // CEREAL_BINARY_ARCHIVE_UTILITY_HPP_