pw_protobuf/encoder: Deprecate the Finalize() API

Deprecates the Finalize() encoder API, instead requiring explicit
nested encoders to be closed via RAII (i.e. destruction) before the
parent encoders are closed.

This simplifies the API as it was unclear before when Finalize()
should be correctly used.

Note that this also adds a precondition to status() that there are
no open nested encoders.

Change-Id: I2c872b45cb4ecd476e12ba5a1c145bfe3ce91a4d
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/57922
Reviewed-by: Alexei Frolov <frolv@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
6 files changed
tree: 3ff2867954235c84de44222d3af8ec8fb65025c3
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_boot/
  15. pw_boot_cortex_m/
  16. pw_build/
  17. pw_build_info/
  18. pw_bytes/
  19. pw_checksum/
  20. pw_chrono/
  21. pw_chrono_embos/
  22. pw_chrono_freertos/
  23. pw_chrono_stl/
  24. pw_chrono_threadx/
  25. pw_cli/
  26. pw_console/
  27. pw_containers/
  28. pw_cpu_exception/
  29. pw_cpu_exception_cortex_m/
  30. pw_crypto/
  31. pw_docgen/
  32. pw_doctor/
  33. pw_env_setup/
  34. pw_function/
  35. pw_fuzzer/
  36. pw_hdlc/
  37. pw_hex_dump/
  38. pw_i2c/
  39. pw_interrupt/
  40. pw_interrupt_cortex_m/
  41. pw_kvs/
  42. pw_libc/
  43. pw_log/
  44. pw_log_basic/
  45. pw_log_null/
  46. pw_log_rpc/
  47. pw_log_tokenized/
  48. pw_malloc/
  49. pw_malloc_freelist/
  50. pw_metric/
  51. pw_minimal_cpp_stdlib/
  52. pw_module/
  53. pw_multisink/
  54. pw_package/
  55. pw_persistent_ram/
  56. pw_polyfill/
  57. pw_preprocessor/
  58. pw_presubmit/
  59. pw_protobuf/
  60. pw_protobuf_compiler/
  61. pw_random/
  62. pw_result/
  63. pw_ring_buffer/
  64. pw_router/
  65. pw_rpc/
  66. pw_snapshot/
  67. pw_software_update/
  68. pw_span/
  69. pw_status/
  70. pw_stm32cube_build/
  71. pw_stream/
  72. pw_string/
  73. pw_symbolizer/
  74. pw_sync/
  75. pw_sync_baremetal/
  76. pw_sync_embos/
  77. pw_sync_freertos/
  78. pw_sync_stl/
  79. pw_sync_threadx/
  80. pw_sys_io/
  81. pw_sys_io_arduino/
  82. pw_sys_io_baremetal_lm3s6965evb/
  83. pw_sys_io_baremetal_stm32f429/
  84. pw_sys_io_stdio/
  85. pw_target_runner/
  86. pw_thread/
  87. pw_thread_embos/
  88. pw_thread_freertos/
  89. pw_thread_stl/
  90. pw_thread_threadx/
  91. pw_tls_client/
  92. pw_tls_client_boringssl/
  93. pw_tls_client_mbedtls/
  94. pw_tokenizer/
  95. pw_tool/
  96. pw_toolchain/
  97. pw_trace/
  98. pw_trace_tokenized/
  99. pw_transfer/
  100. pw_unit_test/
  101. pw_varint/
  102. pw_watch/
  103. pw_web_ui/
  104. pw_work_queue/
  105. targets/
  106. third_party/
  107. .bazelignore
  108. .bazelrc
  109. .clang-format
  110. .clang-tidy
  111. .eslintrc.json
  112. .gitattributes
  113. .gitignore
  114. .gn
  115. .prettierrc.js
  116. .pylintrc
  117. activate.bat
  118. AUTHORS
  119. bootstrap.bat
  120. bootstrap.sh
  121. BUILD.bazel
  122. BUILD.gn
  123. BUILDCONFIG.gn
  124. CMakeLists.txt
  125. LICENSE
  126. modules.gni
  127. OWNERS
  128. package.json
  129. PW_PLUGINS
  130. README.md
  131. tsconfig.json
  132. WORKSPACE
  133. yarn.lock
README.md

See our website: http://pigweed.dev