pw_varint: Add function to read from stream

pw::protobuf::StreamDecoder has a function to read a varint from a
stream that's far too useful to hide as a private member.

Separate it out as a public member of a varint stream API.

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

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links