Skip to content

Commit ef43cf3

Browse files
author
me
committed
disable warnings on windows for now
1 parent f04c0b4 commit ef43cf3

File tree

2 files changed

+115
-71
lines changed

2 files changed

+115
-71
lines changed

src/msgpack.h

Lines changed: 114 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -239,16 +239,7 @@ namespace msgpackcpp
239239
class Compare = std::less<K>,
240240
class Alloc = std::allocator<std::pair<const K, V>>
241241
>
242-
inline void serialize(Stream& out, const std::map<K,V,Compare,Alloc>& map)
243-
{
244-
serialize_map_size(out, map.size());
245-
246-
for (const auto& [k,v] : map)
247-
{
248-
serialize(out, k);
249-
serialize(out, v);
250-
}
251-
}
242+
void serialize(Stream& out, const std::map<K,V,Compare,Alloc>& map);
252243

253244
template <
254245
class Source,
@@ -257,20 +248,7 @@ namespace msgpackcpp
257248
class Compare = std::less<K>,
258249
class Alloc = std::allocator<std::pair<const K, V>>
259250
>
260-
inline void deserialize(Source& in, std::map<K,V,Compare,Alloc>& map)
261-
{
262-
uint32_t size{};
263-
deserialize_map_size(in, size);
264-
265-
for (uint32_t i = 0 ; i < size ; ++i)
266-
{
267-
K key{};
268-
V val{};
269-
deserialize(in, key);
270-
deserialize(in, val);
271-
map.emplace(std::make_pair(key, val));
272-
}
273-
}
251+
void deserialize(Source& in, std::map<K,V,Compare,Alloc>& map);
274252

275253
template <
276254
class Stream,
@@ -280,16 +258,7 @@ namespace msgpackcpp
280258
class KeyEqual = std::equal_to<K>,
281259
class Alloc = std::allocator<std::pair<const K, V>>
282260
>
283-
inline void serialize(Stream& out, const std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map)
284-
{
285-
serialize_map_size(out, map.size());
286-
287-
for (const auto& [k,v] : map)
288-
{
289-
serialize(out, k);
290-
serialize(out, v);
291-
}
292-
}
261+
void serialize(Stream& out, const std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map);
293262

294263
template <
295264
class Source,
@@ -299,46 +268,15 @@ namespace msgpackcpp
299268
class KeyEqual = std::equal_to<K>,
300269
class Alloc = std::allocator<std::pair<const K, V>>
301270
>
302-
inline void deserialize(Source& in, std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map)
303-
{
304-
uint32_t size{};
305-
deserialize_map_size(in, size);
306-
307-
for (uint32_t i = 0 ; i < size ; ++i)
308-
{
309-
K key{};
310-
V val{};
311-
deserialize(in, key);
312-
deserialize(in, val);
313-
map.emplace(std::make_pair(key, val));
314-
}
315-
}
271+
void deserialize(Source& in, std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map);
316272

317-
/////////////////////////////////////////////////////////////////////////////////
318-
/// Tuple
319-
/////////////////////////////////////////////////////////////////////////////////
273+
//----------------------------------------------------------------------------------------------------------------
320274

321275
template<class Stream, class... Args>
322-
inline void serialize(Stream& out, const std::tuple<Args...>& tpl)
323-
{
324-
serialize_array_size(out, sizeof...(Args));
325-
std::apply([&](auto&&... args) {
326-
(serialize(out, std::forward<decltype(args)>(args)),...);
327-
}, tpl);
328-
}
329-
276+
void serialize(Stream& out, const std::tuple<Args...>& tpl);
277+
330278
template<class Source, class... Args>
331-
inline void deserialize(Source& in, std::tuple<Args...>& tpl)
332-
{
333-
uint32_t size{};
334-
deserialize_array_size(in, size);
335-
if (size != sizeof...(Args))
336-
throw std::system_error(BAD_SIZE);
337-
338-
std::apply([&](auto&&... args) {
339-
(deserialize(in, std::forward<decltype(args)>(args)),...);
340-
}, tpl);
341-
}
279+
void deserialize(Source& in, std::tuple<Args...>& tpl);
342280

343281
//----------------------------------------------------------------------------------------------------------------
344282
//----------------------------------------------------------------------------------------------------------------
@@ -957,6 +895,112 @@ namespace msgpackcpp
957895
throw std::system_error(BAD_FORMAT);
958896
}
959897

898+
template <
899+
class Stream,
900+
class K,
901+
class V,
902+
class Compare,
903+
class Alloc
904+
>
905+
inline void serialize(Stream& out, const std::map<K,V,Compare,Alloc>& map)
906+
{
907+
serialize_map_size(out, map.size());
908+
909+
for (const auto& [k,v] : map)
910+
{
911+
serialize(out, k);
912+
serialize(out, v);
913+
}
914+
}
915+
916+
template <
917+
class Source,
918+
class K,
919+
class V,
920+
class Compare,
921+
class Alloc
922+
>
923+
inline void deserialize(Source& in, std::map<K,V,Compare,Alloc>& map)
924+
{
925+
uint32_t size{};
926+
deserialize_map_size(in, size);
927+
928+
for (uint32_t i = 0 ; i < size ; ++i)
929+
{
930+
K key{};
931+
V val{};
932+
deserialize(in, key);
933+
deserialize(in, val);
934+
map.emplace(std::make_pair(key, val));
935+
}
936+
}
937+
938+
template <
939+
class Stream,
940+
class K,
941+
class V,
942+
class Hash,
943+
class KeyEqual,
944+
class Alloc
945+
>
946+
inline void serialize(Stream& out, const std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map)
947+
{
948+
serialize_map_size(out, map.size());
949+
950+
for (const auto& [k,v] : map)
951+
{
952+
serialize(out, k);
953+
serialize(out, v);
954+
}
955+
}
956+
957+
template <
958+
class Source,
959+
class K,
960+
class V,
961+
class Hash,
962+
class KeyEqual,
963+
class Alloc
964+
>
965+
inline void deserialize(Source& in, std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map)
966+
{
967+
uint32_t size{};
968+
deserialize_map_size(in, size);
969+
970+
for (uint32_t i = 0 ; i < size ; ++i)
971+
{
972+
K key{};
973+
V val{};
974+
deserialize(in, key);
975+
deserialize(in, val);
976+
map.emplace(std::make_pair(key, val));
977+
}
978+
}
979+
980+
//----------------------------------------------------------------------------------------------------------------
981+
982+
template<class Stream, class... Args>
983+
inline void serialize(Stream& out, const std::tuple<Args...>& tpl)
984+
{
985+
serialize_array_size(out, sizeof...(Args));
986+
std::apply([&](auto&&... args) {
987+
(serialize(out, std::forward<decltype(args)>(args)),...);
988+
}, tpl);
989+
}
990+
991+
template<class Source, class... Args>
992+
inline void deserialize(Source& in, std::tuple<Args...>& tpl)
993+
{
994+
uint32_t size{};
995+
deserialize_array_size(in, size);
996+
if (size != sizeof...(Args))
997+
throw std::system_error(BAD_SIZE);
998+
999+
std::apply([&](auto&&... args) {
1000+
(deserialize(in, std::forward<decltype(args)>(args)),...);
1001+
}, tpl);
1002+
}
1003+
9601004
//----------------------------------------------------------------------------------------------------------------
9611005

9621006
}

tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ add_executable(tests
3434
pack.cpp)
3535
target_compile_features(tests PRIVATE cxx_std_17)
3636
target_compile_options(tests PRIVATE $<${IS_NOT_MSVC}:-Wall -Wextra -Werror>)
37-
target_compile_options(tests PRIVATE $<${IS_MSVC}:/Wall /WX>)
37+
# target_compile_options(tests PRIVATE $<${IS_MSVC}:/Wall /WX>)
3838
target_include_directories(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
3939
target_link_libraries(tests PRIVATE Boost::describe PRIVATE msgpack-cxx)

0 commit comments

Comments
 (0)