protozero  1.6.1
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 <algorithm>
20 #include <cstddef>
21 #include <cstdint>
22 #include <cstring>
23 #include <string>
24 #include <utility>
25 
26 #include <protozero/config.hpp>
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, embedded messages,
44  // packed repeated fields
45  fixed32 = 5, // fixed32, sfixed32, float
46  unknown = 99 // used for default setting in this library
47 };
48 
55 template <typename T>
56 constexpr inline uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept {
57  return (static_cast<uint32_t>(static_cast<pbf_tag_type>(tag)) << 3) | static_cast<uint32_t>(wire_type);
58 }
59 
63 using pbf_length_type = uint32_t;
64 
65 } // end namespace protozero
66 
67 #endif // PROTOZERO_TYPES_HPP
constexpr uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept
Definition: types.hpp:56
Contains macro checks for different configurations.
pbf_wire_type
Definition: types.hpp:40
uint32_t pbf_length_type
Definition: types.hpp:63
uint32_t pbf_tag_type
Definition: types.hpp:33
All parts of the protozero header-only library are in this namespace.
Definition: byteswap.hpp:24