Commit 631c1b52 authored by Paul's avatar Paul
Browse files

Format

parent 9add94f3
......@@ -98,8 +98,11 @@ constexpr auto sequence_c_impl(F&& f, seq<Ns...>)
return f(std::integral_constant<std::size_t, Ns>{}...);
}
template<class... Ts>
struct overloaded : Ts... { using Ts::operator()...; };
template <class... Ts>
struct overloaded : Ts...
{
using Ts::operator()...;
};
} // namespace detail
......@@ -138,7 +141,7 @@ auto unpack(F f, T&& x)
return sequence(tuple_size(x), [&](auto... is) { f(std::get<is>(static_cast<T&&>(x))...); });
}
template<class... Ts>
template <class... Ts>
detail::overloaded<Ts...> overload(Ts... xs)
{
return {xs...};
......
......@@ -41,7 +41,7 @@ struct msgpack_chunk
if(v.is_array() or v.is_object())
{
std::vector<value> values = v.is_array() ? v.get_array() : v.get_object();
std::for_each(chunks.begin()+1, chunks.end(), [&](const auto& chunk) {
std::for_each(chunks.begin() + 1, chunks.end(), [&](const auto& chunk) {
values.insert(values.end(), chunk.begin(), chunk.end());
});
return values;
......@@ -49,7 +49,7 @@ struct msgpack_chunk
else if(v.is_binary())
{
value::binary data = v.get_binary();
std::for_each(chunks.begin()+1, chunks.end(), [&](const auto& chunk) {
std::for_each(chunks.begin() + 1, chunks.end(), [&](const auto& chunk) {
const value::binary& b = chunk.get_binary();
data.insert(data.end(), b.begin(), b.end());
});
......@@ -105,8 +105,12 @@ MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
v = migraphx::value::array{};
break;
}
std::variant<migraphx::value::array, migraphx::value::binary, migraphx::value::object> r;
switch (o.via.array.ptr->type) {
std::variant<migraphx::value::array,
migraphx::value::binary,
migraphx::value::object>
r;
switch(o.via.array.ptr->type)
{
case msgpack::type::BIN: {
r = migraphx::value::binary{};
break;
......@@ -119,28 +123,35 @@ MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
r = migraphx::value::object{};
break;
}
default:
MIGRAPHX_THROW("Incorrect chunking");
default: MIGRAPHX_THROW("Incorrect chunking");
}
}
std::for_each(
o.via.array.ptr,
o.via.array.ptr + o.via.array.size,
[&](const msgpack::object& sa) {
std::visit(overload([&](migraphx::value::binary& bin) {
bin.insert(bin.end(), o.via.bin.ptr, o.via.bin.ptr+o.via.bin.size);
}, [&](migraphx::value::array& arr) {
std::for_each(
sa.via.array.ptr,
std::visit(
overload(
[&](migraphx::value::binary& bin) {
bin.insert(
bin.end(), o.via.bin.ptr, o.via.bin.ptr + o.via.bin.size);
},
[&](migraphx::value::array& arr) {
std::for_each(sa.via.array.ptr,
sa.via.array.ptr + sa.via.array.size,
[&](const msgpack::object& so) { arr.push_back(so.as<migraphx::value>()); });
}, [&](migraphx::value::object& obj) {
[&](const msgpack::object& so) {
arr.push_back(so.as<migraphx::value>());
});
},
[&](migraphx::value::object& obj) {
std::for_each(sa.via.map.ptr,
sa.via.map.ptr + sa.via.map.size,
[&](const msgpack::object_kv& p) {
obj[p.key.as<std::string>()] = p.val.as<migraphx::value>();
obj[p.key.as<std::string>()] =
p.val.as<migraphx::value>();
});
}), r);
}),
r);
});
std::visit([&](const auto& x) { v = x; }, r);
break;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment