Avro C++
api
AvroSerialize.hh
Go to the documentation of this file.
1
/*
2
* Licensed to the Apache Software Foundation (ASF) under one
3
* or more contributor license agreements. See the NOTICE file
4
* distributed with this work for additional information
5
* regarding copyright ownership. The ASF licenses this file
6
* to you under the Apache License, Version 2.0 (the
7
* "License"); you may not use this file except in compliance
8
* with the License. You may obtain a copy of the License at
9
*
10
* https://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing, software
13
* distributed under the License is distributed on an "AS IS" BASIS,
14
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
* See the License for the specific language governing permissions and
16
* limitations under the License.
17
*/
18
19
#ifndef avro_AvroSerialize_hh__
20
#define avro_AvroSerialize_hh__
21
22
#include "
AvroTraits.hh
"
23
#include "Config.hh"
24
28
29
namespace
avro
{
30
33
34
template
<
typename
Writer,
typename
T>
35
void
serialize
(
Writer
&s,
const
T &val) {
36
serialize
(s, val,
is_serializable<T>
());
37
}
38
40
41
template
<
typename
Writer,
typename
T>
42
void
serialize
(
Writer
&s,
const
T &val,
const
std::false_type &) {
43
static_assert(
sizeof
(T) == 0,
"Not a valid type to serialize"
);
44
}
45
47
48
// @{
49
50
template
<
typename
Writer,
typename
T>
51
void
serialize
(
Writer
&s, T val,
const
std::true_type &) {
52
s.writeValue(val);
53
}
54
55
template
<
typename
Writer>
56
void
serialize
(Writer &s,
const
std::vector<uint8_t> &val,
const
std::true_type &) {
57
s.writeBytes(val.data(), val.size());
58
}
59
60
// @}
61
62
}
// namespace avro
63
64
#endif
avro::is_serializable
Define an is_serializable trait for types we can serialize natively.
Definition:
AvroTraits.hh:38
AvroTraits.hh
avro::WriterImpl< NullValidator >
avro::serialize
void serialize(Writer &s, const T &val)
The main serializer entry point function.
Definition:
AvroSerialize.hh:35
avro
A bunch of templates and specializations for encoding and decoding specific types.
Definition:
AvroParse.hh:30
Generated by
1.8.17