mirror of
https://github.com/RPCS3/cereal.git
synced 2025-02-20 15:52:58 +00:00
Added binary enum serialization
This commit is contained in:
parent
d82ecd7b63
commit
24ad0341ad
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
||||
CPPFLAGS=-std=c++11 -I./include -Wall -Werror
|
||||
CC=g++
|
||||
CC=clang++
|
||||
|
||||
all: unittests sandbox performance
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1816,4 +1816,3 @@ BOOST_AUTO_TEST_CASE( binary_chrono )
|
||||
BOOST_CHECK_EQUAL( o_timePoint1 == i_timePoint1, true );
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user