mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-22 08:02:08 +02:00
Added const char array class template specialization.
This commit is contained in:
@@ -119,6 +119,39 @@ struct object<char[N]> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <std::size_t N>
|
||||||
|
struct pack<const char[N]> {
|
||||||
|
template <typename Stream>
|
||||||
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const char* v) const {
|
||||||
|
uint32_t size = checked_get_container_size(std::strlen(v));
|
||||||
|
o.pack_str(size);
|
||||||
|
o.pack_str_body(v, size);
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <std::size_t N>
|
||||||
|
struct object_with_zone<const char[N]> {
|
||||||
|
void operator()(msgpack::object::with_zone& o, const char* v) const {
|
||||||
|
uint32_t size = checked_get_container_size(std::strlen(v));
|
||||||
|
o.type = msgpack::type::STR;
|
||||||
|
char* ptr = static_cast<char*>(o.zone.allocate_align(size));
|
||||||
|
o.via.str.ptr = ptr;
|
||||||
|
o.via.str.size = size;
|
||||||
|
std::memcpy(ptr, v, size);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <std::size_t N>
|
||||||
|
struct object<const char[N]> {
|
||||||
|
void operator()(msgpack::object& o, const char* v) const {
|
||||||
|
uint32_t size = checked_get_container_size(std::strlen(v));
|
||||||
|
o.type = msgpack::type::STR;
|
||||||
|
o.via.str.ptr = v;
|
||||||
|
o.via.str.size = size;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace adaptor
|
} // namespace adaptor
|
||||||
|
|
||||||
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
||||||
|
Reference in New Issue
Block a user