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