Added binary enum serialization

This commit is contained in:
Randolph Voorhies 2013-06-19 17:56:30 -07:00
parent d82ecd7b63
commit 24ad0341ad
5 changed files with 17 additions and 10 deletions

View File

@ -1,5 +1,5 @@
CPPFLAGS=-std=c++11 -I./include -Wall -Werror
CC=g++
CC=clang++
all: unittests sandbox performance

View File

@ -126,6 +126,16 @@ namespace cereal
ar.loadBinary(std::addressof(t), sizeof(t));
}
//! Serialization for enum types to binary
template<class Archive, class T> inline
typename std::enable_if<std::is_enum<T>::value &&
(std::is_same<Archive, BinaryInputArchive>::value || std::is_same<Archive, BinaryOutputArchive>::value),
void>::type
serialize(Archive & ar, T & t)
{
ar( reinterpret_cast<typename std::underlying_type<T>::type &>(t) );
}
//! Serializing NVP types to binary
template <class Archive, class T> inline
CEREAL_ARCHIVE_RESTRICT_SERIALIZE(BinaryInputArchive, BinaryOutputArchive)

View File

@ -41,12 +41,12 @@ namespace cereal
string
};
template <class Archive> inline
CEREAL_ARCHIVE_RESTRICT_SERIALIZE(BinaryInputArchive, BinaryOutputArchive)
serialize( Archive & ar, type & t )
{
ar( reinterpret_cast<uint8_t &>( t ) );
}
//template <class Archive> inline
//CEREAL_ARCHIVE_RESTRICT_SERIALIZE(BinaryInputArchive, BinaryOutputArchive)
//serialize( Archive & ar, type & t )
//{
// ar( reinterpret_cast<uint8_t &>( t ) );
//}
}
//! Serializing (save) for std::bitset to binary

View File

@ -65,14 +65,12 @@ class Test2
void save(Archive & ar) const
{
ar(a);
//ar(CEREAL_NVP(a));
}
template<class Archive>
void load(Archive & ar)
{
ar(a);
//ar(CEREAL_NVP(a));
}
};

View File

@ -1816,4 +1816,3 @@ BOOST_AUTO_TEST_CASE( binary_chrono )
BOOST_CHECK_EQUAL( o_timePoint1 == i_timePoint1, true );
}
}