@@ -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