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

rm usuless func & cache typeid

parent 5e173df5
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.
......@@ -9,6 +9,14 @@
namespace wolf {
namespace serialization {
/// @todo demangle typeid.name ?
template <typename T>
inline const std::string& type_name(const T&)
{
static const std::string typeid_name = typeid(T).name();
return typeid_name;
}
inline std::string extension(const std::string& file)
{
const std::size_t p = file.find_last_of(".");
......@@ -93,27 +101,18 @@ void serialize_pack(Ar&&)
// end of expansion
}
/// @todo demangle typeid.name ?
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)) );
archive( cereal::make_nvp(type_name(object), std::forward<T>(object)) );
serialize_pack(archive, std::forward<Args>(args)...);
}
template <typename Ar, typename S, typename T>
void serialize(S& stream, T&& object)
{
Ar archive(stream);
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)) );
archive( cereal::make_nvp(type_name(object), std::forward<T>(object)) );
serialize_pack(archive, std::forward<Args>(args)...);
}
......
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