Add defaulted copy/move constructors/assignment in `Options` classes.
Clean up how `Options` are passed.

As for other types, add copy constructor/assignment except for
`Text{Parse,Print}MessageOptions` which are uncopyable, and add move
constructor/assignment except when copying is equivalent to moving.
This indicates when it is worth using `std::move()` for passing a parameter.

Take `Options` parameters by value in most public functions. Exceptions:

* `CFile{Reader,Writer}Base::Options`: they are movable more efficiently than
  copyable due to a `std::string` member, but the relevant classes do not move
  anything from them, so it is better to accept them by reference.

* `{Fd,riegeli::tensorflow::File}{Reader,Writer}Base::Options`: for consistency.

In private functions, take `Options` parameters by value if they are cheap to
copy or move, otherwise by reference.

PiperOrigin-RevId: 914362870
98 files changed
tree: 0a5424de0bb7502b3701a30833af1dd7fea0fa44
  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.