Files
cereal/binary_archive/array.hpp
Shane Grant e9d277025f const_cast for save(), seeking for binary_oarchive
Using const cast to get rid of having two versions of save (changed vector and array so far)

Initial implementation of seeking to allow saving and restoring position within a binary archive
2013-06-14 12:17:21 -07:00

45 lines
1.3 KiB
C++

#ifndef CEREAL_BINARY_ARCHIVE_ARRAY_HPP_
#define CEREAL_BINARY_ARCHIVE_ARRAY_HPP_
#include <cereal/binary_archive/binary_archive.hpp>
#include <array>
namespace cereal
{
//! Saving for std::array primitive types to binary
template <class T, size_t N>
typename std::enable_if<std::is_arithmetic<T>::value, void>::type
save( BinaryOutputArchive & ar, std::array<T, N> const & array )
{
ar.save_binary( array.data(), N * sizeof(T) );
}
//! Loading for std::array primitive types to binary
template <class T, size_t N>
typename std::enable_if<std::is_arithmetic<T>::value, void>::type
load( BinaryInputArchive & ar, std::array<T, N> & array )
{
ar.load_binary( array.data(), N * sizeof(T) );
}
//! Saving for const std::array all other types to binary
template <class T, size_t N>
typename std::enable_if<!std::is_arithmetic<T>::value, void>::type
save( BinaryOutputArchive & ar, std::array<T, N> const & array )
{
for( auto const & i : array )
ar & i;
}
//! Loading for std::array all other types to binary
template <class T, size_t N>
typename std::enable_if<!std::is_arithmetic<T>::value, void>::type
load( BinaryInputArchive & ar, std::array<T, N> & array )
{
for( auto & i : array )
ar & i;
}
} // namespace cereal
#endif // CEREAL_BINARY_ARCHIVE_ARRAY_HPP_