diff --git a/include/msgpack/adaptor/char_ptr.hpp b/include/msgpack/adaptor/char_ptr.hpp index a124f5ae..ff4b4e20 100644 --- a/include/msgpack/adaptor/char_ptr.hpp +++ b/include/msgpack/adaptor/char_ptr.hpp @@ -119,6 +119,39 @@ struct object { } }; +template +struct pack { + template + msgpack::packer& operator()(msgpack::packer& 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 +struct object_with_zone { + 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(o.zone.allocate_align(size)); + o.via.str.ptr = ptr; + o.via.str.size = size; + std::memcpy(ptr, v, size); + } +}; + +template +struct object { + 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 } // MSGPACK_API_VERSION_NAMESPACE(v1)