diff --git a/example/speed_test.cc b/example/speed_test.cc index 570cb1bf..267c042b 100644 --- a/example/speed_test.cc +++ b/example/speed_test.cc @@ -31,7 +31,7 @@ void test_map_pack_unpack() { std::cout << "Start unpacking..." << std::endl; { boost::timer::cpu_timer timer; - msgpack::unpack(str.data(), str.size(), NULL, &mempool, deserialized); + msgpack::unpack(str.data(), str.size(), NULL, mempool, deserialized); std::string result = timer.format(); std::cout << result << std::endl; } diff --git a/src/msgpack/unpack.hpp b/src/msgpack/unpack.hpp index dc136800..11bcbd06 100644 --- a/src/msgpack/unpack.hpp +++ b/src/msgpack/unpack.hpp @@ -50,8 +50,9 @@ namespace detail { class unpack_user { public: - zone* z() const { return z_; } - void set_z(zone* z) { z_ = z; } + zone const& z() const { return *z_; } + zone& z() { return *z_; } + void set_z(zone& z) { z_ = &z; } bool referenced() const { return referenced_; } void set_referenced(bool referenced) { referenced_ = referenced; } private: @@ -109,7 +110,7 @@ inline int template_callback_array(unpack_user* u, unsigned int n, object& o) { o.type = type::ARRAY; o.via.array.size = 0; - o.via.array.ptr = (object*)u->z()->malloc(n*sizeof(object)); + o.via.array.ptr = (object*)u->z().malloc(n*sizeof(object)); if(o.via.array.ptr == NULL) { return -1; } return 0; } @@ -121,7 +122,7 @@ inline int template_callback_map(unpack_user* u, unsigned int n, object& o) { o.type = type::MAP; o.via.map.size = 0; - o.via.map.ptr = (object_kv*)u->z()->malloc(n*sizeof(object_kv)); + o.via.map.ptr = (object_kv*)u->z().malloc(n*sizeof(object_kv)); if(o.via.map.ptr == NULL) { return -1; } return 0; } @@ -684,7 +685,7 @@ typedef enum { // obsolete static unpack_return unpack(const char* data, size_t len, size_t* off, - zone* z, object& result); + zone& z, object& result); // obsolete @@ -719,7 +720,7 @@ inline unpacker::unpacker(size_t initial_buffer_size) detail::init_count(buffer_); ctx_.init(); - ctx_.user().set_z(z_); + ctx_.user().set_z(*z_); ctx_.user().set_referenced(false); } @@ -876,7 +877,7 @@ inline zone* unpacker::release_zone() zone* old = z_; z_ = r; - ctx_.user().set_z(z_); + ctx_.user().set_z(*z_); return old; } @@ -943,7 +944,7 @@ namespace detail { inline unpack_return unpack_imp(const char* data, size_t len, size_t* off, - zone* result_zone, object& result) + zone& result_zone, object& result) { size_t noff = 0; if(off != NULL) { noff = *off; } @@ -988,7 +989,7 @@ inline void unpack(unpacked* result, msgpack::unique_ptr z(new zone()); unpack_return ret = detail::unpack_imp( - data, len, offset, z.get(), obj); + data, len, offset, *z, obj); switch(ret) { @@ -1014,7 +1015,7 @@ inline void unpack(unpacked* result, // obsolete inline unpack_return unpack(const char* data, size_t len, size_t* off, - zone* z, object& result) + zone& z, object& result) { return detail::unpack_imp(data, len, off, z, result); @@ -1025,7 +1026,7 @@ inline object unpack(const char* data, size_t len, zone& z, size_t* off) { object result; - switch( unpack(data, len, off, &z, result) ) { + switch( unpack(data, len, off, z, result) ) { case UNPACK_SUCCESS: return result; diff --git a/test/msgpack_test.cpp b/test/msgpack_test.cpp index f00637d3..5e23e51c 100644 --- a/test/msgpack_test.cpp +++ b/test/msgpack_test.cpp @@ -38,7 +38,7 @@ const double kEPS = 1e-10; msgpack::zone z; \ msgpack::object obj; \ msgpack::unpack_return ret = \ - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); \ + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); \ EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); \ test_type val2; \ obj.convert(&val2); \ @@ -165,7 +165,7 @@ TEST(MSGPACK, simple_buffer_float) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); float val2; obj.convert(&val2); @@ -255,7 +255,7 @@ TEST(MSGPACK, simple_buffer_double) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); double val2; obj.convert(&val2); @@ -277,7 +277,7 @@ TEST(MSGPACK, simple_buffer_true) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); bool val2; obj.convert(&val2); @@ -292,7 +292,7 @@ TEST(MSGPACK, simple_buffer_false) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); bool val2; obj.convert(&val2); @@ -314,7 +314,7 @@ TEST(MSGPACK_STL, simple_buffer_string) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); string val2; obj.convert(&val2); @@ -334,7 +334,7 @@ TEST(MSGPACK_STL, simple_buffer_vector) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); vector val2; obj.convert(&val2); @@ -354,7 +354,7 @@ TEST(MSGPACK_STL, simple_buffer_map) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); map val2; obj.convert(&val2); @@ -374,7 +374,7 @@ TEST(MSGPACK_STL, simple_buffer_deque) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); deque val2; obj.convert(&val2); @@ -394,7 +394,7 @@ TEST(MSGPACK_STL, simple_buffer_list) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); list val2; obj.convert(&val2); @@ -414,7 +414,7 @@ TEST(MSGPACK_STL, simple_buffer_set) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); set val2; obj.convert(&val2); @@ -432,7 +432,7 @@ TEST(MSGPACK_STL, simple_buffer_pair) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); pair val2; obj.convert(&val2); @@ -455,7 +455,7 @@ TEST(MSGPACK_STL, simple_buffer_multimap) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); multimap val2; obj.convert(&val2); @@ -485,7 +485,7 @@ TEST(MSGPACK_STL, simple_buffer_multiset) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); multiset val2; obj.convert(&val2); @@ -520,7 +520,7 @@ TEST(MSGPACK_TR1, simple_buffer_tr1_unordered_map) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); tr1::unordered_map val2; obj.convert(&val2); @@ -547,7 +547,7 @@ TEST(MSGPACK_TR1, simple_buffer_tr1_unordered_multimap) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); tr1::unordered_multimap val2; obj.convert(&val2); @@ -581,7 +581,7 @@ TEST(MSGPACK_TR1, simple_buffer_tr1_unordered_set) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); tr1::unordered_set val2; obj.convert(&val2); @@ -603,7 +603,7 @@ TEST(MSGPACK_TR1, simple_buffer_tr1_unordered_multiset) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); tr1::unordered_multiset val2; obj.convert(&val2); @@ -760,7 +760,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_class) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestClass val2; val2.i = -1; @@ -793,7 +793,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_class_old_to_new) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestClass2 val2; val2.i = -1; @@ -815,7 +815,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_class_new_to_old) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestClass val2; val2.i = -1; @@ -856,7 +856,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_enum_member) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestEnumMemberClass val2; val2.t1 = TestEnumMemberClass::STATE_INVALID; @@ -919,7 +919,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestUnionMemberClass val2; obj.convert(&val2); @@ -934,7 +934,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member) msgpack::zone z; msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); TestUnionMemberClass val2; obj.convert(&val2); @@ -962,7 +962,7 @@ TEST(MSGPACK_USER_DEFINED, simple_buffer_union_member) msgpack::zone z; \ msgpack::object obj; \ msgpack::unpack_return ret = \ - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); \ + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); \ EXPECT_EQ(msgpack::UNPACK_SUCCESS, ret); \ test_type val2; \ obj.convert(&val2); \ diff --git a/test/object.cc b/test/object.cc index 71c1e59c..7a6b0a87 100644 --- a/test/object.cc +++ b/test/object.cc @@ -37,7 +37,7 @@ TEST(object, convert) msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(ret, msgpack::UNPACK_SUCCESS); myclass m2; @@ -58,7 +58,7 @@ TEST(object, as) msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(ret, msgpack::UNPACK_SUCCESS); EXPECT_EQ(m1, obj.as()); diff --git a/test/pack_unpack.cc b/test/pack_unpack.cc index 19a20baf..6718a01b 100644 --- a/test/pack_unpack.cc +++ b/test/pack_unpack.cc @@ -60,7 +60,7 @@ TEST(unpack, myclass) msgpack::object obj; msgpack::unpack_return ret = - msgpack::unpack(sbuf.data(), sbuf.size(), NULL, &z, obj); + msgpack::unpack(sbuf.data(), sbuf.size(), NULL, z, obj); EXPECT_EQ(ret, msgpack::UNPACK_SUCCESS); @@ -105,17 +105,17 @@ TEST(unpack, sequence_compat) msgpack::object obj; msgpack::unpack_return ret; - ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, &z, obj); + ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, z, obj); EXPECT_TRUE(ret >= 0); EXPECT_EQ(ret, msgpack::UNPACK_EXTRA_BYTES); EXPECT_EQ(1, obj.as()); - ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, &z, obj); + ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, z, obj); EXPECT_TRUE(ret >= 0); EXPECT_EQ(ret, msgpack::UNPACK_EXTRA_BYTES); EXPECT_EQ(2, obj.as()); - ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, &z, obj); + ret = msgpack::unpack(sbuf.data(), sbuf.size(), &offset, z, obj); EXPECT_TRUE(ret >= 0); EXPECT_EQ(ret, msgpack::UNPACK_SUCCESS); EXPECT_EQ(3, obj.as());