MessagePack for C++
Loading...
Searching...
No Matches
byte.hpp
Go to the documentation of this file.
1//
2// MessagePack for C++ static resolution routine
3//
4// Copyright (C) 2018 KONDO Takatoshi
5//
6// Distributed under the Boost Software License, Version 1.0.
7// (See accompanying file LICENSE_1_0.txt or copy at
8// http://www.boost.org/LICENSE_1_0.txt)
9//
10#ifndef MSGPACK_V1_TYPE_BYTE_HPP
11#define MSGPACK_V1_TYPE_BYTE_HPP
12
14
15#if MSGPACK_CPP_VERSION >= 201703
16
19#include "msgpack/object.hpp"
22#include "msgpack/object.hpp"
23
24#include <cstddef>
25
26namespace msgpack {
27
31
32namespace adaptor {
33
34template <>
35struct convert<std::byte> {
36 msgpack::object const& operator()(msgpack::object const& o, std::byte& v) const {
37 v = static_cast<std::byte>(type::detail::convert_integer<unsigned char>(o));
38 return o;
39 }
40};
41
42template <>
43struct pack<std::byte> {
44 template <typename Stream>
46 o.pack_unsigned_char(static_cast<unsigned char>(v));
47 return o;
48 }
49};
50
51template <>
52struct object<std::byte> {
53 void operator()(msgpack::object& o, std::byte v) const {
55 o.via.u64 = static_cast<unsigned char>(v);
56 }
57};
58
59template <>
60struct object_with_zone<std::byte> {
61 void operator()(msgpack::object::with_zone& o, const std::byte& v) const {
62 static_cast<msgpack::object&>(o) << v;
63 }
64};
65
66
67} // namespace adaptor
68
70} // MSGPACK_API_VERSION_NAMESPACE(v1)
72
73} // namespace msgpack
74
75#endif // MSGPACK_CPP_VERSION >= 201703
76
77#endif // MSGPACK_V1_TYPE_BYTE_HPP
The class template that supports continuous packing.
Definition pack.hpp:33
packer< Stream > & pack_unsigned_char(unsigned char d)
Packing unsigned char.
Definition pack.hpp:999
@ POSITIVE_INTEGER
Definition object_fwd_decl.hpp:30
Definition adaptor_base.hpp:15
void pack(msgpack::packer< Stream > &o, const T &v)
Definition object.hpp:1185
void convert(T &v, msgpack::object const &o)
Definition object.hpp:1178
msgpack::object const & operator()(msgpack::object const &o, T &v) const
Definition object.hpp:646
void operator()(msgpack::object::with_zone &o, T const &v) const
Definition object.hpp:662
void operator()(msgpack::object &o, T const &v) const
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, T const &v) const
Definition object.hpp:655
Definition object.hpp:35
Object class that corresponding to MessagePack format object.
Definition object_fwd.hpp:75
union_type via
Definition object_fwd.hpp:93
msgpack::type::object_type type
Definition object_fwd.hpp:92
uint64_t u64
Definition object_fwd.hpp:78
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition versioning.hpp:66