Merge pull request #676 from redboltz/remove_object_pack_recursion

Removed recursion from msgpack::object packing and stringize.
This commit is contained in:
Takatoshi Kondo
2018-04-27 06:33:51 +09:00
committed by GitHub
5 changed files with 778 additions and 416 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -83,6 +83,13 @@ bool operator!=(const T& y, const msgpack::object& x);
void operator<< (msgpack::object& o, const msgpack_object& v);
class object_parser;
template <typename Stream>
struct object_pack_visitor;
struct object_stringize_visitor;
// obsolete
template <typename T>
MSGPACK_DEPRECATED("please use member function version of object::convert(T&)")
@@ -104,7 +111,7 @@ msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::
template <typename Stream>
msgpack::packer<Stream>& operator<< (msgpack::packer<Stream>& o, const msgpack::object::with_zone& v);
std::ostream& operator<< (std::ostream& s, const msgpack::object& o);
std::ostream& operator<< (std::ostream& s, const msgpack::object& v);
/// @cond
} // MSGPACK_API_VERSION_NAMESPACE(v1)

View File

@@ -37,6 +37,10 @@ using v1::detail::packer_serializer;
} // namespace detail
using v1::object_parser;
using v1::object_pack_visitor;
using v1::object_stringize_visitor;
using v1::operator==;
using v1::operator!=;

View File

@@ -37,6 +37,10 @@ using v2::detail::packer_serializer;
} // namespace detail
using v2::object_parser;
using v2::object_pack_visitor;
using v2::object_stringize_visitor;
using v2::operator==;
using v2::operator!=;

View File

@@ -17,7 +17,7 @@ TEST(json, basic_elements)
msgpack::object o(t1, z);
std::stringstream ss;
ss << o;
EXPECT_EQ(ss.str(), "[12, -34, 1.23, -4.56, true, false, \"ABC\", {\"Hello\":789, \"World\":-789}]");
EXPECT_EQ(ss.str(), "[12,-34,1.23,-4.56,true,false,\"ABC\",{\"Hello\":789,\"World\":-789}]");
}
TEST(json, escape)