Skip to content
Snippets Groups Projects
Commit ab71a0c2 authored by Jeremie Deray's avatar Jeremie Deray
Browse files

serialize obj+typeid::name & fix parameter-pack

parent 9b75e051
No related branches found
No related tags found
1 merge request!141Serialization
This commit is part of merge request !141. Comments created here will be created in the context of that merge request.
...@@ -87,20 +87,35 @@ struct Extensions ...@@ -87,20 +87,35 @@ struct Extensions
}; };
}; };
template <typename Ar, typename S, typename T, typename... Args> template <typename Ar>
void serialize(S& stream, T&& object, Args&&... args) void serialize_pack(Ar&&)
{ {
Ar archive(stream); // end of expansion
}
archive( cereal::make_nvp("object", std::forward<T>(object)) ); /// @todo demangle typeid.name ?
archive( cereal::make_nvp("object", std::forward<Args>(args))... );
template <typename Ar, typename T, typename... Args>
void serialize_pack(Ar&& archive, T&& object, Args&&... args)
{
archive( cereal::make_nvp(typeid(T).name(), std::forward<T>(object)) );
serialize_pack(archive, std::forward<Args>(args)...);
} }
template <typename Ar, typename S, typename T> template <typename Ar, typename S, typename T>
void serialize(S& stream, T&& object) void serialize(S& stream, T&& object)
{ {
Ar archive(stream); Ar archive(stream);
archive( cereal::make_nvp("object", std::forward<T>(object)) ); archive( cereal::make_nvp(typeid(T).name(), std::forward<T>(object)) );
}
template <typename Ar, typename S, typename T, typename... Args>
void serialize(S& stream, T&& object, Args&&... args)
{
Ar archive(stream);
archive( cereal::make_nvp(typeid(T).name(), std::forward<T>(object)) );
serialize_pack(archive, std::forward<Args>(args)...);
} }
template <typename EXT, typename InAr, typename OutAr> template <typename EXT, typename InAr, typename OutAr>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment