@@ -18,14 +18,23 @@ struct CLoader
18
18
struct CHelper1
19
19
{
20
20
template <bool a>
21
+ #if defined(WINDOWS)
22
+ static void load_data (T& data, M& stream, const P& /* p*/ )
23
+ #elif defined(LINUX)
21
24
static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& /* p*/ )
25
+ #endif
22
26
{
23
27
static_assert (!std::is_polymorphic<T>::value, " Cannot load polymorphic classes as binary data." );
24
28
stream.r (&data, sizeof (T));
25
29
}
26
30
31
+ #if defined(WINDOWS)
32
+ template <>
33
+ static void load_data<true >(T& data, M& stream, const P& /* p*/ )
34
+ #elif defined(LINUX)
27
35
template <bool a>
28
36
static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& /* p*/ )
37
+ #endif
29
38
{
30
39
T* data1 = const_cast <T*>(&data);
31
40
data1->load (stream);
@@ -36,13 +45,22 @@ struct CLoader
36
45
struct CHelper
37
46
{
38
47
template <bool pointer>
48
+ #if defined(WINDOWS)
49
+ static void load_data (T& data, M& stream, const P& p)
50
+ #elif defined(LINUX)
39
51
static void load_data (std::enable_if_t <pointer, T&> data, M& stream, const P& p)
52
+ #endif
40
53
{
41
54
CHelper1<T>::load_data<object_type_traits::is_base_and_derived<ISerializable, T>::value>(data, stream, p);
42
55
}
43
56
57
+ #if defined(WINDOWS)
58
+ template <>
59
+ static void load_data<true >(T& data, M& stream, const P& p)
60
+ #elif defined(LINUX)
44
61
template <bool pointer>
45
62
static void load_data (std::enable_if_t <!pointer, T&> data, M& stream, const P& p)
63
+ #endif
46
64
{
47
65
CLoader<M, P>::load_data (*(data = new typename object_type_traits::remove_pointer<T>::type ()), stream, p);
48
66
}
@@ -76,14 +94,24 @@ struct CLoader
76
94
template <typename T1, typename T2>
77
95
struct add_helper
78
96
{
97
+ #if defined(WINDOWS)
98
+ template <bool >
99
+ static void add (T1& data, T2& value)
100
+ #elif defined(LINUX)
79
101
template <bool a>
80
102
static void add (std::enable_if_t <a, T1&> data, T2& value)
103
+ #endif
81
104
{
82
105
data.push_back (value);
83
106
}
84
107
108
+ #if defined(WINDOWS)
109
+ template <>
110
+ static void add<true >(T1& data, T2& value)
111
+ #elif defined(LINUX)
85
112
template <bool a>
86
113
static void add (std::enable_if_t <!a, T1&> data, T2& value)
114
+ #endif
87
115
{
88
116
data.insert (value);
89
117
}
@@ -115,13 +143,22 @@ struct CLoader
115
143
struct CHelper4
116
144
{
117
145
template <bool a>
146
+ #if defined(WINDOWS)
147
+ static void load_data (T& data, M& stream, const P& p)
148
+ #elif defined(LINUX)
118
149
static void load_data (std::enable_if_t <a, T&> data, M& stream, const P& p)
150
+ #endif
119
151
{
120
152
CHelper<T>::load_data<object_type_traits::is_pointer<T>::value>(data, stream, p);
121
153
}
122
154
155
+ #if defined(WINDOWS)
156
+ template <>
157
+ static void load_data<true >(T& data, M& stream, const P& p)
158
+ #elif defined(LINUX)
123
159
template <bool a>
124
160
static void load_data (std::enable_if_t <!a, T&> data, M& stream, const P& p)
161
+ #endif
125
162
{
126
163
CHelper3::load_data (data, stream, p);
127
164
}
0 commit comments