10 #ifndef MSGPACK_V1_TYPE_EXT_HPP 11 #define MSGPACK_V1_TYPE_EXT_HPP 29 ext() : m_data(1, 0) {}
30 ext(int8_t t,
const char* p, uint32_t s) {
31 msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
32 m_data.reserve(static_cast<std::size_t>(s) + 1);
33 m_data.push_back(static_cast<char>(t));
34 m_data.insert(m_data.end(), p, p + s);
36 ext(int8_t t, uint32_t s) {
37 msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
38 m_data.resize(static_cast<std::size_t>(s) + 1);
39 m_data[0] =
static_cast<char>(t);
43 return static_cast<int8_t
>(m_data[0]);
52 return static_cast<uint32_t
>(m_data.size()) - 1;
55 return m_data == x.m_data;
63 return m_data < x.m_data;
67 return m_data > x.m_data;
70 std::vector<char> m_data;
91 template <
typename Stream>
110 ptr[0] =
static_cast<char>(v.
type());
111 std::memcpy(ptr + 1, v.
data(),
size);
126 ext_ref() : m_ptr(static_cast<char*>(static_cast<void*>(&m_size))), m_size(0) {}
128 m_ptr(s == 0 ? static_cast<char*>(static_cast<void*>(&m_size)) : p),
129 m_size(s == 0 ? 0 : s - 1) {
130 msgpack::detail::check_container_size_for_ext<sizeof(std::size_t)>(s);
145 return static_cast<int8_t
>(m_ptr[0]);
149 return std::string(m_ptr + 1, m_size);
153 return m_size == x.m_size && std::memcmp(m_ptr, x.m_ptr, m_size) == 0;
157 return !(*
this == x);
161 if (m_size < x.m_size)
return true;
162 if (m_size > x.m_size)
return false;
163 return std::memcmp(m_ptr, x.m_ptr, m_size) < 0;
167 if (m_size > x.m_size)
return true;
168 if (m_size < x.m_size)
return false;
169 return std::memcmp(m_ptr, x.m_ptr, m_size) > 0;
179 m_data.reserve(x.size() + 1);
181 m_data.push_back(x.type());
182 m_data.insert(m_data.end(), x.data(), x.data() + x.size());
200 template <
typename Stream>
236 #endif // MSGPACK_V1_TYPE_EXT_HPP
packer< Stream > & pack_ext(size_t l, int8_t type)
Packing ext header, type, and length.
Definition: pack.hpp:1281
const char * data() const
Definition: ext.hpp:45
char * data()
Definition: ext.hpp:48
void * allocate_align(size_t size, size_t align=MSGPACK_ZONE_ALIGN)
Definition: cpp03_zone.hpp:236
union_type via
Definition: object_fwd.hpp:92
int8_t type() const
Definition: ext.hpp:42
msgpack::zone & zone
Definition: object.hpp:36
bool operator>(const ext &x) const
Definition: ext.hpp:66
const char * ptr
Definition: object_fwd.hpp:46
ext(int8_t t, const char *p, uint32_t s)
Definition: ext.hpp:30
Definition: adaptor_base.hpp:15
ext_ref(ext const &x)
Definition: ext.hpp:134
const char * data() const
Definition: object_fwd.hpp:44
Definition: object.hpp:34
msgpack::object const & operator()(msgpack::object const &o, msgpack::type::ext &v) const
Definition: ext.hpp:80
bool operator<(const ext &x) const
Definition: ext.hpp:62
const char * data() const
Definition: ext.hpp:136
Definition: adaptor_base.hpp:43
int8_t type() const
Definition: ext.hpp:144
uint32_t size
Definition: object_fwd.hpp:45
Definition: object_fwd.hpp:222
ext(int8_t t, uint32_t s)
Definition: ext.hpp:36
uint32_t size() const
Definition: ext.hpp:140
Definition: adaptor_base.hpp:32
int8_t type() const
Definition: object_fwd.hpp:43
bool operator==(const ext &x) const
Definition: ext.hpp:54
Definition: object_fwd_decl.hpp:41
msgpack::object const & operator()(msgpack::object const &o, msgpack::type::ext_ref &v) const
Definition: ext.hpp:191
uint32_t size() const
Definition: ext.hpp:51
ext_ref(const char *p, uint32_t s)
Definition: ext.hpp:127
Object class that corresponding to MessagePack format object.
Definition: object_fwd.hpp:75
ext_ref()
Definition: ext.hpp:126
packer< Stream > & pack_ext_body(const char *b, uint32_t l)
Packing ext body.
Definition: pack.hpp:1340
msgpack::type::object_type type
Definition: object_fwd.hpp:91
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition: versioning.hpp:58
ext()
Definition: ext.hpp:29
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const msgpack::type::ext &v) const
Definition: ext.hpp:92
void operator()(msgpack::object::with_zone &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:223
Definition: adaptor_base.hpp:38
The class template that supports continuous packing.
Definition: adaptor_base_decl.hpp:23
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:201
bool operator!=(const ext &x) const
Definition: ext.hpp:58
void operator()(msgpack::object::with_zone &o, const msgpack::type::ext &v) const
Definition: ext.hpp:103
msgpack::object_ext ext
Definition: object_fwd.hpp:88
void operator()(msgpack::object &o, const msgpack::type::ext_ref &v) const
Definition: ext.hpp:212
Definition: adaptor_base.hpp:27
std::string str() const
Definition: ext.hpp:148