Reduce code duplication in field handlers by having more templates, and simplify
the types somewhat.

Remove a separate layer of naming of field handler types, i.e. aliases to lower
level handlers. At the same time, parameterize the field handler types by the
value type, together with varnint kind for varint fields, rather than a trait
struct. Spelling the types is very rare anyway, and this makes it easier to
treat them generically, including future code. This also reduces the amount of
exported names.

For parameters holding the undecoded representation of a field value for a
particular wire type (`uint64_t` for varint, `uint32_t` for fixed32 etc.),
prefer the name `repr` to `value`. Let `value` mean the decoded value.

Do not inline implementations of decoding packed fields.

PiperOrigin-RevId: 842788195
8 files changed
tree: d7146594a4b1d6048cf9d8040b403e165074c496
  1. doc/
  2. python/
  3. riegeli/
  4. tf_dependency/
  5. .bazelrc
  6. configure
  7. CONTRIBUTING.md
  8. LICENSE
  9. MANIFEST.in
  10. MODULE.bazel
  11. README.md
README.md

Riegeli

Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers. It supports dense compression, fast decoding, seeking, detection and optional skipping of data corruption, filtering of proto message fields for even faster decoding, and parallel encoding.

See documentation.

Status

Riegeli file format will only change in a backward compatible way (i.e. future readers will understand current files, but current readers might not understand files using future features).

Riegeli C++ API might change in incompatible ways.