protozero 1.7.1
Minimalistic protocol buffer decoder and encoder in C++.
Loading...
Searching...
No Matches
types.hpp
Go to the documentation of this file.
1#ifndef PROTOZERO_TYPES_HPP
2#define PROTOZERO_TYPES_HPP
3
4/*****************************************************************************
5
6protozero - Minimalistic protocol buffer decoder and encoder in C++.
7
8This file is from https://github.com/mapbox/protozero where you can find more
9documentation.
10
11*****************************************************************************/
12
19#include "config.hpp"
20
21#include <algorithm>
22#include <cstddef>
23#include <cstdint>
24#include <cstring>
25#include <string>
26#include <utility>
27
28namespace protozero {
29
33using pbf_tag_type = uint32_t;
34
40enum class pbf_wire_type : uint32_t {
41 varint = 0, // int32/64, uint32/64, sint32/64, bool, enum
42 fixed64 = 1, // fixed64, sfixed64, double
43 length_delimited = 2, // string, bytes, nested messages, packed repeated fields
44 fixed32 = 5, // fixed32, sfixed32, float
45 unknown = 99 // used for default setting in this library
46};
47
54template <typename T>
55constexpr inline uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept {
56 return (static_cast<uint32_t>(static_cast<pbf_tag_type>(tag)) << 3U) | static_cast<uint32_t>(wire_type);
57}
58
62using pbf_length_type = uint32_t;
63
64} // end namespace protozero
65
66#endif // PROTOZERO_TYPES_HPP
Contains macro checks for different configurations.
All parts of the protozero header-only library are in this namespace.
Definition basic_pbf_builder.hpp:24
uint32_t pbf_tag_type
Definition types.hpp:33
uint32_t pbf_length_type
Definition types.hpp:62
pbf_wire_type
Definition types.hpp:40
constexpr uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept
Definition types.hpp:55