pw_stream: Allow staging data to MemoryWriter end

Changes the memory writer to use std::memmove to allow data to be staged
to the unused portion of a MemoryWriter's buffer before it is written.
This is useful for operations that require direct access to a buffer to
build data before it is flushed to a MemoryWriter.

No-Docs-Update-Reason: Optimization that shouldn't be advertised
Change-Id: I3728e50e30031d7f87db43981827ef799fbce217
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40244
Reviewed-by: David Rogers <davidrogers@google.com>
Commit-Queue: Armando Montanez <amontanez@google.com>
3 files changed
tree: 2dc82c2047c9e74ecf765c0114324963facca76d
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_arduino_build/
  6. pw_assert/
  7. pw_assert_basic/
  8. pw_assert_log/
  9. pw_base64/
  10. pw_bloat/
  11. pw_blob_store/
  12. pw_boot_armv7m/
  13. pw_build/
  14. pw_bytes/
  15. pw_checksum/
  16. pw_chrono/
  17. pw_chrono_embos/
  18. pw_chrono_freertos/
  19. pw_chrono_stl/
  20. pw_chrono_threadx/
  21. pw_cli/
  22. pw_containers/
  23. pw_cpu_exception/
  24. pw_cpu_exception_cortex_m/
  25. pw_docgen/
  26. pw_doctor/
  27. pw_env_setup/
  28. pw_fuzzer/
  29. pw_hdlc/
  30. pw_hex_dump/
  31. pw_i2c/
  32. pw_interrupt/
  33. pw_interrupt_cortex_m/
  34. pw_kvs/
  35. pw_libc/
  36. pw_log/
  37. pw_log_basic/
  38. pw_log_multisink/
  39. pw_log_null/
  40. pw_log_rpc/
  41. pw_log_sink/
  42. pw_log_tokenized/
  43. pw_malloc/
  44. pw_malloc_freelist/
  45. pw_metric/
  46. pw_minimal_cpp_stdlib/
  47. pw_module/
  48. pw_multisink/
  49. pw_package/
  50. pw_persistent_ram/
  51. pw_polyfill/
  52. pw_preprocessor/
  53. pw_presubmit/
  54. pw_protobuf/
  55. pw_protobuf_compiler/
  56. pw_random/
  57. pw_result/
  58. pw_ring_buffer/
  59. pw_router/
  60. pw_rpc/
  61. pw_snapshot/
  62. pw_span/
  63. pw_status/
  64. pw_stream/
  65. pw_string/
  66. pw_sync/
  67. pw_sync_baremetal/
  68. pw_sync_embos/
  69. pw_sync_freertos/
  70. pw_sync_stl/
  71. pw_sync_threadx/
  72. pw_sys_io/
  73. pw_sys_io_arduino/
  74. pw_sys_io_baremetal_lm3s6965evb/
  75. pw_sys_io_baremetal_stm32f429/
  76. pw_sys_io_stdio/
  77. pw_target_runner/
  78. pw_thread/
  79. pw_thread_embos/
  80. pw_thread_freertos/
  81. pw_thread_stl/
  82. pw_thread_threadx/
  83. pw_tokenizer/
  84. pw_tool/
  85. pw_toolchain/
  86. pw_trace/
  87. pw_trace_tokenized/
  88. pw_unit_test/
  89. pw_varint/
  90. pw_watch/
  91. pw_web_ui/
  92. targets/
  93. third_party/
  94. .bazelignore
  95. .bazelrc
  96. .clang-format
  97. .eslintrc.json
  98. .gitattributes
  99. .gitignore
  100. .gn
  101. .prettierrc.js
  102. .pylintrc
  103. activate.bat
  104. AUTHORS
  105. bootstrap.bat
  106. bootstrap.sh
  107. BUILD
  108. BUILD.gn
  109. BUILDCONFIG.gn
  110. CMakeLists.txt
  111. LICENSE
  112. modules.gni
  113. OWNERS
  114. package.json
  115. PW_PLUGINS
  116. README.md
  117. tsconfig.json
  118. WORKSPACE
  119. yarn.lock
README.md

See our website: http://pigweed.dev