From 02515928ec9bbbdc107c0c36a943e11ac786f27c Mon Sep 17 00:00:00 2001 From: Jeremie Deray <jeremie.deray@pal-robotics.com> Date: Thu, 26 Oct 2017 09:45:11 +0200 Subject: [PATCH] rm usuless func & cache typeid --- src/serialization/cereal/io.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/serialization/cereal/io.h b/src/serialization/cereal/io.h index b90eacfaf..524af2e41 100644 --- a/src/serialization/cereal/io.h +++ b/src/serialization/cereal/io.h @@ -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)...); } -- GitLab