10#ifndef MSGPACK_V2_UNPACK_HPP
11#define MSGPACK_V2_UNPACK_HPP
13#if MSGPACK_DEFAULT_API_VERSION >= 2
29 void operator()(
char* buffer) {
30 m_z->push_finalizer(&detail::decr_count, buffer);
35class unpacker :
public parser<unpacker, zone_push_finalizer>,
36 public detail::create_object_visitor {
42 unpack_limit
const& limit = unpack_limit())
44 detail::create_object_visitor(
f, user_data, limit),
48 set_referenced(
false);
51 detail::create_object_visitor&
visitor() {
return *
this; }
88 msgpack::unique_ptr<msgpack::zone> m_z;
93 bool ret = parser_t::next();
132inline bool unpacker::flush_zone()
140 set_referenced(
false);
149 const char* data, std::size_t
len, std::size_t&
off,
bool& referenced,
151 unpack_limit
const& limit
159 data,
len,
noff, *
z, obj, referenced,
f, user_data, limit);
175 const char* data, std::size_t
len, std::size_t&
off,
177 unpack_limit
const& limit)
180 return msgpack::v2::unpack(data,
len,
off, referenced,
f, user_data, limit);
184 const char* data, std::size_t
len,
bool& referenced,
186 unpack_limit
const& limit)
189 return msgpack::v2::unpack(data,
len,
off, referenced,
f, user_data, limit);
193 const char* data, std::size_t
len,
195 unpack_limit
const& limit)
199 return msgpack::v2::unpack(data,
len,
off, referenced,
f, user_data, limit);
204 const char* data, std::size_t
len, std::size_t&
off,
bool& referenced,
206 unpack_limit
const& limit)
213 data,
len,
noff, *
z, obj, referenced,
f, user_data, limit);
219 result.zone() = msgpack::move(
z);
224 result.zone() = msgpack::move(
z);
233 const char* data, std::size_t
len, std::size_t&
off,
235 unpack_limit
const& limit)
238 msgpack::v2::unpack(
result, data,
len,
off, referenced,
f, user_data, limit);
243 const char* data, std::size_t
len,
bool& referenced,
245 unpack_limit
const& limit)
248 msgpack::v2::unpack(
result, data,
len,
off, referenced,
f, user_data, limit);
253 const char* data, std::size_t
len,
255 unpack_limit
const& limit)
259 msgpack::v2::unpack(
result, data,
len,
off, referenced,
f, user_data, limit);
265 const char* data, std::size_t
len, std::size_t&
off,
bool& referenced,
267 unpack_limit
const& limit)
273 data,
len,
noff,
z, obj, referenced,
f, user_data, limit);
290 const char* data, std::size_t
len, std::size_t&
off,
292 unpack_limit
const& limit)
295 return msgpack::v2::unpack(
z, data,
len,
off, referenced,
f, user_data, limit);
300 const char* data, std::size_t
len,
bool& referenced,
302 unpack_limit
const& limit)
305 return msgpack::v2::unpack(
z, data,
len,
off, referenced,
f, user_data, limit);
310 const char* data, std::size_t
len,
312 unpack_limit
const& limit)
316 return msgpack::v2::unpack(
z, data,
len,
off, referenced,
f, user_data, limit);
322unpack_imp(
const char* data, std::size_t
len, std::size_t&
off,
325 unpack_limit
const& limit = unpack_limit())
327 create_object_visitor
v(
f, user_data, limit);
330 v.set_referenced(referenced);
332 referenced =
v.referenced();
bool referenced() const
Definition create_object_visitor.hpp:65
The class holds object and zone.
Definition object.hpp:44
msgpack::zone * release_zone()
Definition unpack.hpp:1277
void reset_zone()
Definition unpack.hpp:1291
msgpack::object const & data()
Definition unpack.hpp:1272
unpacker(unpack_reference_func f=&unpacker::default_reference_func, void *user_data=MSGPACK_NULLPTR, std::size_t initial_buffer_size=MSGPACK_UNPACKER_INIT_BUFFER_SIZE, unpack_limit const &limit=unpack_limit())
Constructor.
Definition unpack.hpp:1062
void reset()
Definition unpack.hpp:1312
bool next(msgpack::object_handle *result)
Unpack one msgpack::object. [obsolete].
Definition unpack.hpp:1244
Definition cpp03_zone.hpp:30
parse_return parse_imp(const char *data, size_t len, size_t &off, Visitor &v)
object_type
Definition object_fwd_decl.hpp:27
Definition adaptor_base.hpp:15
bool(* unpack_reference_func)(msgpack::type::object_type type, std::size_t size, void *user_data)
The type of reference or copy judging function.
Definition unpack_decl.hpp:74
parse_return
Definition parse_return.hpp:23
@ PARSE_EXTRA_BYTES
Definition parse_return.hpp:25
@ PARSE_SUCCESS
Definition parse_return.hpp:24
void convert(T &v, msgpack::object const &o)
Definition object.hpp:1178
msgpack::object_handle unpack(const char *data, std::size_t len, std::size_t &off, bool &referenced, unpack_reference_func f, void *user_data, unpack_limit const &limit)
Unpack msgpack::object from a buffer.
Definition unpack.hpp:1396
Object class that corresponding to MessagePack format object.
Definition object_fwd.hpp:75
#define MSGPACK_NULLPTR
Definition cpp_config_decl.hpp:85
#define MSGPACK_UNPACKER_INIT_BUFFER_SIZE
Definition unpack_decl.hpp:43
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition versioning.hpp:66