From 5ab613cc3e0a0ddb0fc652dba37fadc86bc4cd4e Mon Sep 17 00:00:00 2001 From: Aleksey Komarov Date: Wed, 6 Jun 2018 11:26:55 +0300 Subject: [PATCH] ugly fix for object_loader.h: using #if defined(WINDOWS) --- src/Common/object_loader.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/Common/object_loader.h b/src/Common/object_loader.h index db65a521367..4c764168679 100644 --- a/src/Common/object_loader.h +++ b/src/Common/object_loader.h @@ -18,14 +18,23 @@ struct CLoader struct CHelper1 { template +#if defined(WINDOWS) + static void load_data(T& data, M& stream, const P& /*p*/) +#elif defined(LINUX) static void load_data(std::enable_if_t data, M& stream, const P& /*p*/) +#endif { static_assert(!std::is_polymorphic::value, "Cannot load polymorphic classes as binary data."); stream.r(&data, sizeof(T)); } +#if defined(WINDOWS) + template <> + static void load_data(T& data, M& stream, const P& /*p*/) +#elif defined(LINUX) template static void load_data(std::enable_if_t data, M& stream, const P& /*p*/) +#endif { T* data1 = const_cast(&data); data1->load(stream); @@ -36,13 +45,22 @@ struct CLoader struct CHelper { template +#if defined(WINDOWS) + static void load_data(T& data, M& stream, const P& p) +#elif defined(LINUX) static void load_data(std::enable_if_t data, M& stream, const P& p) +#endif { CHelper1::load_data::value>(data, stream, p); } +#if defined(WINDOWS) + template <> + static void load_data(T& data, M& stream, const P& p) +#elif defined(LINUX) template static void load_data(std::enable_if_t data, M& stream, const P& p) +#endif { CLoader::load_data(*(data = new typename object_type_traits::remove_pointer::type()), stream, p); } @@ -76,14 +94,24 @@ struct CLoader template struct add_helper { +#if defined(WINDOWS) + template + static void add(T1& data, T2& value) +#elif defined(LINUX) template static void add(std::enable_if_t data, T2& value) +#endif { data.push_back(value); } +#if defined(WINDOWS) + template <> + static void add(T1& data, T2& value) +#elif defined(LINUX) template static void add(std::enable_if_t data, T2& value) +#endif { data.insert(value); } @@ -115,13 +143,22 @@ struct CLoader struct CHelper4 { template +#if defined(WINDOWS) + static void load_data(T& data, M& stream, const P& p) +#elif defined(LINUX) static void load_data(std::enable_if_t data, M& stream, const P& p) +#endif { CHelper::load_data::value>(data, stream, p); } +#if defined(WINDOWS) + template <> + static void load_data(T& data, M& stream, const P& p) +#elif defined(LINUX) template static void load_data(std::enable_if_t data, M& stream, const P& p) +#endif { CHelper3::load_data(data, stream, p); }