MessagePack for C++
Toggle main menu visibility
Loading...
Searching...
No Matches
msgpack
v1
adaptor
v4raw.hpp
Go to the documentation of this file.
1
//
2
// MessagePack for C++ static resolution routine
3
//
4
// Copyright (C) 2008-2016 FURUHASHI Sadayuki and 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_V4RAW_HPP
11
#define MSGPACK_V1_TYPE_V4RAW_HPP
12
13
#include "
msgpack/v1/adaptor/v4raw_decl.hpp
"
14
#include <cstring>
15
#include <string>
16
17
namespace
msgpack
{
18
20
MSGPACK_API_VERSION_NAMESPACE
(v1) {
22
23
namespace
type
{
24
25
struct
v4raw_ref
{
26
v4raw_ref
() :
size
(0),
ptr
(
MSGPACK_NULLPTR
) {}
27
v4raw_ref
(
const
char
* p, uint32_t s) :
size
(s),
ptr
(p) {}
28
29
uint32_t
size
;
30
const
char
*
ptr
;
31
32
std::string
str
()
const
{
return
std::string(
ptr
,
size
); }
33
34
bool
operator==
(
const
v4raw_ref
& x)
const
35
{
36
return
size
== x.
size
&& (
size
== 0 || std::memcmp(
ptr
, x.
ptr
,
size
) == 0);
37
}
38
39
bool
operator!=
(
const
v4raw_ref
& x)
const
40
{
41
return
!(*
this
== x);
42
}
43
44
bool
operator<
(
const
v4raw_ref
& x)
const
45
{
46
if
(
size
== x.
size
) {
return
std::memcmp(
ptr
, x.
ptr
,
size
) < 0; }
47
else
{
return
size
< x.
size
; }
48
}
49
50
bool
operator>
(
const
v4raw_ref
& x)
const
51
{
52
if
(
size
== x.
size
) {
return
std::memcmp(
ptr
, x.
ptr
,
size
) > 0; }
53
else
{
return
size
> x.
size
; }
54
}
55
};
56
57
}
// namespace type
58
59
namespace
adaptor {
60
61
template
<>
62
struct
convert
<
type
::v4raw_ref> {
63
msgpack::object
const
&
operator()
(
msgpack::object
const
& o,
type::v4raw_ref
& v)
const
{
64
if
(o.
type
!=
msgpack::type::STR
) {
throw
msgpack::type_error
(); }
65
v.
ptr
= o.
via
.
str
.
ptr
;
66
v.
size
= o.
via
.
str
.
size
;
67
return
o;
68
}
69
};
70
71
template
<>
72
struct
pack
<
type
::v4raw_ref> {
73
template
<
typename
Stream>
74
msgpack::packer<Stream>
&
operator()
(
msgpack::packer<Stream>
& o,
const
type::v4raw_ref
& v)
const
{
75
o.
pack_v4raw
(v.
size
);
76
o.
pack_v4raw_body
(v.
ptr
, v.
size
);
77
return
o;
78
}
79
};
80
81
template
<>
82
struct
object
<
type
::v4raw_ref> {
83
void
operator()
(
msgpack::object
& o,
const
type::v4raw_ref
& v)
const
{
84
o.
type
=
msgpack::type::STR
;
85
o.
via
.
str
.
ptr
= v.
ptr
;
86
o.
via
.
str
.
size
= v.
size
;
87
}
88
};
89
90
template
<>
91
struct
object_with_zone
<
type
::v4raw_ref> {
92
void
operator()
(
msgpack::object::with_zone
& o,
const
type::v4raw_ref
& v)
const
{
93
static_cast<
msgpack::object
&
>
(o) << v;
94
}
95
};
96
97
}
// namespace adaptor
98
100
}
// MSGPACK_API_VERSION_NAMESPACE(v1)
102
103
}
// namespace msgpack
104
105
#endif
// MSGPACK_V1_TYPE_V4RAW_HPP
msgpack::packer
The class template that supports continuous packing.
Definition
pack.hpp:33
msgpack::packer::pack_v4raw
packer< Stream > & pack_v4raw(uint32_t l)
Packing raw (v4) header and length.
Definition
pack.hpp:1264
msgpack::packer::pack_v4raw_body
packer< Stream > & pack_v4raw_body(const char *b, uint32_t l)
Packing raw (v4) body.
Definition
pack.hpp:1283
msgpack::type_error
Definition
object_fwd.hpp:234
msgpack::type
Definition
array_ref.hpp:24
msgpack::type::STR
@ STR
Definition
object_fwd_decl.hpp:38
msgpack
Definition
adaptor_base.hpp:15
msgpack::adaptor::convert< type::v4raw_ref >::operator()
msgpack::object const & operator()(msgpack::object const &o, type::v4raw_ref &v) const
Definition
v4raw.hpp:63
msgpack::adaptor::convert
Definition
adaptor_base.hpp:27
msgpack::adaptor::object< type::v4raw_ref >::operator()
void operator()(msgpack::object &o, const type::v4raw_ref &v) const
Definition
v4raw.hpp:83
msgpack::adaptor::object_with_zone< type::v4raw_ref >::operator()
void operator()(msgpack::object::with_zone &o, const type::v4raw_ref &v) const
Definition
v4raw.hpp:92
msgpack::adaptor::object_with_zone
Definition
adaptor_base.hpp:43
msgpack::adaptor::object
Definition
adaptor_base.hpp:38
msgpack::adaptor::pack< type::v4raw_ref >::operator()
msgpack::packer< Stream > & operator()(msgpack::packer< Stream > &o, const type::v4raw_ref &v) const
Definition
v4raw.hpp:74
msgpack::adaptor::pack
Definition
adaptor_base.hpp:32
msgpack::object_str::ptr
const char * ptr
Definition
object_fwd.hpp:34
msgpack::object_str::size
uint32_t size
Definition
object_fwd.hpp:33
msgpack::object
Object class that corresponding to MessagePack format object.
Definition
object_fwd.hpp:77
msgpack::object::via
union_type via
Definition
object_fwd.hpp:95
msgpack::object::type
msgpack::type::object_type type
Definition
object_fwd.hpp:94
msgpack::object::with_zone
object_with_zone_type with_zone
Definition
object_fwd.hpp:225
msgpack::type::v4raw_ref
Definition
v4raw.hpp:25
msgpack::type::v4raw_ref::operator!=
bool operator!=(const v4raw_ref &x) const
Definition
v4raw.hpp:39
msgpack::type::v4raw_ref::v4raw_ref
v4raw_ref(const char *p, uint32_t s)
Definition
v4raw.hpp:27
msgpack::type::v4raw_ref::str
std::string str() const
Definition
v4raw.hpp:32
msgpack::type::v4raw_ref::operator>
bool operator>(const v4raw_ref &x) const
Definition
v4raw.hpp:50
msgpack::type::v4raw_ref::size
uint32_t size
Definition
v4raw.hpp:29
msgpack::type::v4raw_ref::ptr
const char * ptr
Definition
v4raw.hpp:30
msgpack::type::v4raw_ref::v4raw_ref
v4raw_ref()
Definition
v4raw.hpp:26
msgpack::type::v4raw_ref::operator<
bool operator<(const v4raw_ref &x) const
Definition
v4raw.hpp:44
msgpack::type::v4raw_ref::operator==
bool operator==(const v4raw_ref &x) const
Definition
v4raw.hpp:34
msgpack::object::union_type::str
msgpack::object_str str
Definition
object_fwd.hpp:89
v4raw_decl.hpp
MSGPACK_NULLPTR
#define MSGPACK_NULLPTR
Definition
cpp_config_decl.hpp:85
MSGPACK_API_VERSION_NAMESPACE
#define MSGPACK_API_VERSION_NAMESPACE(ns)
Definition
versioning.hpp:66
Generated by
1.17.0