Skip to content

Commit 5ab613c

Browse files
committed
ugly fix for object_loader.h: using #if defined(WINDOWS)
1 parent 6c6475a commit 5ab613c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/Common/object_loader.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,23 @@ struct CLoader
1818
struct CHelper1
1919
{
2020
template <bool a>
21+
#if defined(WINDOWS)
22+
static void load_data(T& data, M& stream, const P& /*p*/)
23+
#elif defined(LINUX)
2124
static void load_data(std::enable_if_t<a, T&> data, M& stream, const P& /*p*/)
25+
#endif
2226
{
2327
static_assert(!std::is_polymorphic<T>::value, "Cannot load polymorphic classes as binary data.");
2428
stream.r(&data, sizeof(T));
2529
}
2630

31+
#if defined(WINDOWS)
32+
template <>
33+
static void load_data<true>(T& data, M& stream, const P& /*p*/)
34+
#elif defined(LINUX)
2735
template <bool a>
2836
static void load_data(std::enable_if_t<!a, T&> data, M& stream, const P& /*p*/)
37+
#endif
2938
{
3039
T* data1 = const_cast<T*>(&data);
3140
data1->load(stream);
@@ -36,13 +45,22 @@ struct CLoader
3645
struct CHelper
3746
{
3847
template <bool pointer>
48+
#if defined(WINDOWS)
49+
static void load_data(T& data, M& stream, const P& p)
50+
#elif defined(LINUX)
3951
static void load_data(std::enable_if_t<pointer, T&> data, M& stream, const P& p)
52+
#endif
4053
{
4154
CHelper1<T>::load_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
4255
}
4356

57+
#if defined(WINDOWS)
58+
template <>
59+
static void load_data<true>(T& data, M& stream, const P& p)
60+
#elif defined(LINUX)
4461
template <bool pointer>
4562
static void load_data(std::enable_if_t<!pointer, T&> data, M& stream, const P& p)
63+
#endif
4664
{
4765
CLoader<M, P>::load_data(*(data = new typename object_type_traits::remove_pointer<T>::type()), stream, p);
4866
}
@@ -76,14 +94,24 @@ struct CLoader
7694
template <typename T1, typename T2>
7795
struct add_helper
7896
{
97+
#if defined(WINDOWS)
98+
template <bool>
99+
static void add(T1& data, T2& value)
100+
#elif defined(LINUX)
79101
template <bool a>
80102
static void add(std::enable_if_t<a, T1&> data, T2& value)
103+
#endif
81104
{
82105
data.push_back(value);
83106
}
84107

108+
#if defined(WINDOWS)
109+
template <>
110+
static void add<true>(T1& data, T2& value)
111+
#elif defined(LINUX)
85112
template <bool a>
86113
static void add(std::enable_if_t<!a, T1&> data, T2& value)
114+
#endif
87115
{
88116
data.insert(value);
89117
}
@@ -115,13 +143,22 @@ struct CLoader
115143
struct CHelper4
116144
{
117145
template <bool a>
146+
#if defined(WINDOWS)
147+
static void load_data(T& data, M& stream, const P& p)
148+
#elif defined(LINUX)
118149
static void load_data(std::enable_if_t<a, T&> data, M& stream, const P& p)
150+
#endif
119151
{
120152
CHelper<T>::load_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
121153
}
122154

155+
#if defined(WINDOWS)
156+
template <>
157+
static void load_data<true>(T& data, M& stream, const P& p)
158+
#elif defined(LINUX)
123159
template <bool a>
124160
static void load_data(std::enable_if_t<!a, T&> data, M& stream, const P& p)
161+
#endif
125162
{
126163
CHelper3::load_data(data, stream, p);
127164
}

0 commit comments

Comments
 (0)