protozero  1.6.3
Minimalistic protocol buffer decoder and encoder in C++.
types.hpp
Go to the documentation of this file.
1 #ifndef PROTOZERO_TYPES_HPP
2 #define PROTOZERO_TYPES_HPP
3 
4 /*****************************************************************************
5 
6 protozero - Minimalistic protocol buffer decoder and encoder in C++.
7 
8 This file is from https://github.com/mapbox/protozero where you can find more
9 documentation.
10 
11 *****************************************************************************/
12 
19 #include <protozero/config.hpp>
20 
21 #include <algorithm>
22 #include <cstddef>
23 #include <cstdint>
24 #include <cstring>
25 #include <string>
26 #include <utility>
27 
28 namespace protozero {
29 
33 using pbf_tag_type = uint32_t;
34 
40 enum 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 
54 template <typename T>
55 constexpr 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 
62 using pbf_length_type = uint32_t;
63 
64 } // end namespace protozero
65 
66 #endif // PROTOZERO_TYPES_HPP
constexpr uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept
Definition: types.hpp:55
Contains macro checks for different configurations.
pbf_wire_type
Definition: types.hpp:40
uint32_t pbf_length_type
Definition: types.hpp:62
uint32_t pbf_tag_type
Definition: types.hpp:33
All parts of the protozero header-only library are in this namespace.
Definition: byteswap.hpp:23