protozero
Minimalistic protocol buffer decoder and encoder in C++.
|
All parts of the protozero header-only library are in this namespace. More...
Classes | |
class | const_fixed_iterator |
class | const_svarint_iterator |
class | const_varint_iterator |
class | data_view |
struct | end_of_buffer_exception |
struct | exception |
class | iterator_range |
class | pbf_builder |
class | pbf_message |
class | pbf_reader |
class | pbf_writer |
struct | unknown_pbf_wire_type_exception |
struct | varint_too_long_exception |
Typedefs | |
using | packed_field_bool = detail::packed_field_varint< bool > |
Class for generating packed repeated bool fields. | |
using | packed_field_enum = detail::packed_field_varint< int32_t > |
Class for generating packed repeated enum fields. | |
using | packed_field_int32 = detail::packed_field_varint< int32_t > |
Class for generating packed repeated int32 fields. | |
using | packed_field_sint32 = detail::packed_field_svarint< int32_t > |
Class for generating packed repeated sint32 fields. | |
using | packed_field_uint32 = detail::packed_field_varint< uint32_t > |
Class for generating packed repeated uint32 fields. | |
using | packed_field_int64 = detail::packed_field_varint< int64_t > |
Class for generating packed repeated int64 fields. | |
using | packed_field_sint64 = detail::packed_field_svarint< int64_t > |
Class for generating packed repeated sint64 fields. | |
using | packed_field_uint64 = detail::packed_field_varint< uint64_t > |
Class for generating packed repeated uint64 fields. | |
using | packed_field_fixed32 = detail::packed_field_fixed< uint32_t > |
Class for generating packed repeated fixed32 fields. | |
using | packed_field_sfixed32 = detail::packed_field_fixed< int32_t > |
Class for generating packed repeated sfixed32 fields. | |
using | packed_field_fixed64 = detail::packed_field_fixed< uint64_t > |
Class for generating packed repeated fixed64 fields. | |
using | packed_field_sfixed64 = detail::packed_field_fixed< int64_t > |
Class for generating packed repeated sfixed64 fields. | |
using | packed_field_float = detail::packed_field_fixed< float > |
Class for generating packed repeated float fields. | |
using | packed_field_double = detail::packed_field_fixed< double > |
Class for generating packed repeated double fields. | |
using | pbf_tag_type = uint32_t |
using | pbf_length_type = uint32_t |
Enumerations | |
enum | pbf_wire_type : uint32_t { varint = 0, fixed64 = 1, length_delimited = 2, fixed32 = 5, unknown = 99 } |
Functions | |
template<typename T > | |
void | swap (iterator_range< T > &lhs, iterator_range< T > &rhs) noexcept |
void | swap (pbf_reader &lhs, pbf_reader &rhs) noexcept |
void | swap (pbf_writer &lhs, pbf_writer &rhs) noexcept |
template<typename T > | |
constexpr uint32_t | tag_and_type (T tag, pbf_wire_type wire_type) noexcept |
void | swap (data_view &lhs, data_view &rhs) noexcept |
bool | operator== (const data_view &lhs, const data_view &rhs) noexcept |
bool | operator!= (const data_view &lhs, const data_view &rhs) noexcept |
uint64_t | decode_varint (const char **data, const char *end) |
void | skip_varint (const char **data, const char *end) |
template<typename T > | |
int | write_varint (T data, uint64_t value) |
constexpr uint32_t | encode_zigzag32 (int32_t value) noexcept |
constexpr uint64_t | encode_zigzag64 (int64_t value) noexcept |
constexpr int32_t | decode_zigzag32 (uint32_t value) noexcept |
constexpr int64_t | decode_zigzag64 (uint64_t value) noexcept |
Variables | |
constexpr const int8_t | max_varint_length = sizeof(uint64_t) * 8 / 7 + 1 |
All parts of the protozero header-only library are in this namespace.
using protozero::pbf_length_type = typedef uint32_t |
The type used for length values, such as the length of a field.
using protozero::pbf_tag_type = typedef uint32_t |
The type used for field tags (field numbers).
|
strong |
The type used to encode type information. See the table on https://developers.google.com/protocol-buffers/docs/encoding
|
inline |
Decode a 64 bit varint.
Strong exception guarantee: if there is an exception the data pointer will not be changed.
[in,out] | data | Pointer to pointer to the input data. After the function returns this will point to the next data to be read. |
[in] | end | Pointer one past the end of the input data. |
varint_too_long_exception | if the varint is longer then the maximum length that would fit in a 64 bit int. Usually this means your data is corrupted or you are trying to read something as a varint that isn't. |
end_of_buffer_exception | if the end of the buffer was reached before the end of the varint. |
|
inlinenoexcept |
Decodes a 32 bit ZigZag-encoded integer.
|
inlinenoexcept |
Decodes a 64 bit ZigZag-encoded integer.
|
inlinenoexcept |
ZigZag encodes a 32 bit integer.
|
inlinenoexcept |
ZigZag encodes a 64 bit integer.
Two data_view instances are not equal if they have different sizes or the content differs.
lhs | First object. |
rhs | Second object. |
Two data_view instances are equal if they have the same size and the same content.
lhs | First object. |
rhs | Second object. |
|
inline |
Skip over a varint.
Strong exception guarantee: if there is an exception the data pointer will not be changed.
[in,out] | data | Pointer to pointer to the input data. After the function returns this will point to the next data to be read. |
[in] | end | Pointer one past the end of the input data. |
end_of_buffer_exception | if the end of the buffer was reached before the end of the varint. |
|
inlinenoexcept |
Swap two iterator_ranges.
lhs | First range. |
rhs | Second range. |
Swap two data_view objects.
lhs | First object. |
rhs | Second object. |
|
inlinenoexcept |
Swap two pbf_writer objects.
lhs | First object. |
rhs | Second object. |
|
inlinenoexcept |
Swap two pbf_reader objects.
lhs | First object. |
rhs | Second object. |
|
inlinenoexcept |
Get the tag and wire type of the current field in one integer suitable for comparison with a switch statement.
See pbf_reader.tag_and_type() for an example how to use this.
|
inline |
Varint encode a 64 bit integer.
T | An output iterator type. |
data | Output iterator the varint encoded value will be written to byte by byte. |
value | The integer that will be encoded. |
Any | exception thrown by increment or dereference operator on data. |
constexpr const int8_t protozero::max_varint_length = sizeof(uint64_t) * 8 / 7 + 1 |
The maximum length of a 64 bit varint.