Protozero Cheat Sheet

September 8, 2017 ยท View on GitHub

See also this handy table from the Google Protocol Buffers documentation.

Scalar types

PBF TypeUnderlying StorageC++ TypeGetterNotes
int32varintint32_tget_int32()
sint32varint (zigzag)int32_tget_sint32()
uint32varintuint32_tget_uint32()
int64varintint64_tget_int64()
sint64varint (zigzag)int64_tget_sint64()
uint64varintuint64_tget_uint64()
boolvarintboolget_bool()
enumvarintint32_tget_enum()
fixed3232bit fixeduint32_tget_fixed32()
sfixed3232bit fixedint32_tget_sfixed32()
fixed6464bit fixeduint64_tget_fixed64()
sfixed6464bit fixedint64_tget_sfixed64()
float32bit fixedfloatget_float()
double64bit fixeddoubleget_double()
stringlength-delimiteddata_viewget_view()(1)
stringlength-delimitedpairget_data()(2)
stringlength-delimitedstd::stringget_string()
byteslength-delimiteddata_viewget_view()(1)
byteslength-delimitedpairget_data()(2)
byteslength-delimitedstd::stringget_bytes()
messagelength-delimiteddata_viewget_view()(1)
messagelength-delimitedpairget_data()(2)
messagelength-delimitedpbf_readerget_message()

Notes:

  • (1) preferred form, returns protozero::data_view which is convertible to std::string if needed.
  • (2) deprecated form, returns std::pair<const char*, pbf_length_type>, use get_view() instead. This form is only available if PROTOZERO_STRICT_API is not defined.
  • The setter function of pbf_writer is always add_ + the PBF type. Several overloads are available.

Packed repeated fields

PBF TypeGetter
int32get_packed_int32()
sint32get_packed_sint32()
uint32get_packed_uint32()
int64get_packed_int64()
sint64get_packed_sint64()
uint64get_packed_uint64()
boolget_packed_bool()
enumget_packed_enum()
fixed32get_packed_fixed32()
sfixed32get_packed_sfixed32()
fixed64get_packed_fixed64()
sfixed64get_packed_sfixed64()
floatget_packed_float()
doubleget_packed_double()

Packed repeated fields for string, bytes, and message types are not possible.