10 #ifndef MSGPACK_TYPE_EXT_HPP 11 #define MSGPACK_TYPE_EXT_HPP 30 ext() : m_data(1, 0) {}
31 ext(int8_t t,
const char* p, uint32_t s) {
32 detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
33 m_data.reserve(static_cast<std::size_t>(s) + 1);
34 m_data.push_back(static_cast<char>(t));
35 m_data.insert(m_data.end(), p, p + s);
37 ext(int8_t t, uint32_t s) {
38 detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
39 m_data.resize(static_cast<std::size_t>(s) + 1);
40 m_data[0] =
static_cast<char>(t);
44 return static_cast<int8_t
>(m_data[0]);
53 return static_cast<uint32_t
>(m_data.size()) - 1;
56 return m_data == x.m_data;
64 return m_data < x.m_data;
68 return m_data > x.m_data;
71 std::vector<char> m_data;
92 template <
typename Stream>
111 ptr[0] =
static_cast<char>(v.
type());
112 std::memcpy(ptr + 1, v.
data(),
size);
127 ext_ref() : m_ptr(static_cast<char*>(static_cast<void*>(&m_size))), m_size(0) {}
129 m_ptr(s == 0 ? static_cast<char*>(static_cast<void*>(&m_size)) : p),
130 m_size(s == 0 ? 0 : s - 1) {
131 detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
146 return static_cast<int8_t
>(m_ptr[0]);
150 return std::string(m_ptr + 1, m_size);
154 return m_size == x.m_size && std::memcmp(m_ptr, x.m_ptr, m_size) == 0;
158 return !(*
this == x);
162 if (m_size < x.m_size)
return true;
163 if (m_size > x.m_size)
return false;
164 return std::memcmp(m_ptr, x.m_ptr, m_size) < 0;
168 if (m_size > x.m_size)
return true;
169 if (m_size < x.m_size)
return false;
170 return std::memcmp(m_ptr, x.m_ptr, m_size) > 0;
180 m_data.reserve(x.size() + 1);
182 m_data.push_back(x.type());
183 m_data.insert(m_data.end(), x.data(), x.data() + x.size());
201 template <
typename Stream>
237 #endif // MSGPACK_TYPE_EXT_HPP uint32_t size() const
Definition: ext.hpp:141
uint32_t size() const
Definition: ext.hpp:52
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
bool operator>(const ext &x) const
Definition: ext.hpp:67
const char * data() const
Definition: object_fwd.hpp:71
packer< Stream > & pack_ext(size_t l, int8_t type)
Packing ext header, type, and length.
Definition: pack.hpp:1284
char * data()
Definition: ext.hpp:49
void * allocate_align(size_t size, size_t align=MSGPACK_ZONE_ALIGN)
Definition: cpp03_zone.hpp:248
msgpack::object const & operator()(msgpack::object const &o, msgpack::type::ext &v) const
Definition: ext.hpp:81
int8_t type() const
Definition: ext.hpp:145
union_type via
Definition: object_fwd.hpp:123
msgpack::zone & zone
Definition: object_fwd.hpp:262
const char * ptr
Definition: object_fwd.hpp:73
ext(int8_t t, const char *p, uint32_t s)
Definition: ext.hpp:31
Definition: adaptor_base.hpp:15
ext_ref(ext const &x)
Definition: ext.hpp:135
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:202
Definition: object_fwd.hpp:260
std::string str() const
Definition: ext.hpp:149
Definition: adaptor_base.hpp:45
uint32_t size
Definition: object_fwd.hpp:72
void operator()(msgpack::object::with_zone &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:224
Definition: object_fwd.hpp:253
ext(int8_t t, uint32_t s)
Definition: ext.hpp:37
Definition: adaptor_base.hpp:34
Definition: object_fwd.hpp:41
bool operator<(const ext &x) const
Definition: ext.hpp:63
ext_ref(const char *p, uint32_t s)
Definition: ext.hpp:128
msgpack::object const & operator()(msgpack::object const &o, msgpack::type::ext_ref &v) const
Definition: ext.hpp:192
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:106
ext_ref()
Definition: ext.hpp:127
const char * data() const
Definition: ext.hpp:137
packer< Stream > & pack_ext_body(const char *b, uint32_t l)
Packing ext body.
Definition: pack.hpp:1343
msgpack::type::object_type type
Definition: object_fwd.hpp:122
ext()
Definition: ext.hpp:30
void operator()(msgpack::object &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:213
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const msgpack::type::ext &v) const
Definition: ext.hpp:93
int8_t type() const
Definition: object_fwd.hpp:70
Definition: adaptor_base.hpp:40
The class template that supports continuous packing.
Definition: adaptor_base.hpp:22
int8_t type() const
Definition: ext.hpp:43
msgpack::object_ext ext
Definition: object_fwd.hpp:119
Definition: adaptor_base.hpp:29
bool operator!=(const ext &x) const
Definition: ext.hpp:59
void operator()(msgpack::object::with_zone &o, const msgpack::type::ext &v) const
Definition: ext.hpp:104
const char * data() const
Definition: ext.hpp:46
bool operator==(const ext &x) const
Definition: ext.hpp:55