.. _module-pw_bytes:

========
pw_bytes
========
.. pigweed-module::
   :name: pw_bytes

pw_bytes is a collection of utilities for manipulating binary data.

------------
Dependencies
------------
* ``pw_preprocessor``
* ``pw_status``
* ``pw_span``

--------
Features
--------

pw_bytes/alignment.h
====================
Functions for aligning sizes and addresses to memory alignment boundaries.

 .. doxygenfunction:: pw::AlignDown(size_t value, size_t alignment)

 .. doxygenfunction:: pw::AlignDown(T* value, size_t alignment)

 .. doxygenfunction:: pw::AlignUp(size_t value, size_t alignment)

 .. doxygenfunction:: pw::AlignUp(T* value, size_t alignment)

 .. doxygenfunction:: pw::Padding

 .. doxygenfunction:: pw::GetAlignedSubspan

pw_bytes/array.h
================
Functions for working with byte arrays, primarily for building fixed-size byte
arrays at compile time.

pw_bytes/byte_builder.h
=======================
.. doxygenclass:: pw::ByteBuilder
   :members:

.. doxygenclass:: pw::ByteBuffer
   :members:

Size report: using ByteBuffer
-----------------------------
.. include:: byte_builder_size_report

pw_bytes/bit.h
================
Implementation of features provided by C++20's ``<bit>`` header. Supported
features:

* ``pw::endian`` -- Implementation of the ``std::endian`` enum. If
  ``std::endian`` is available, ``pw::endian`` is an alias of it.

* Additional functions for bit-level operations.

  .. doxygenfunction:: pw::bytes::SignExtend
  .. doxygenfunction:: pw::bytes::ExtractBits

pw_bytes/endian.h
=================
Functions for converting the endianness of integral values.

pw_bytes/suffix.h
=================
This module exports a single ``_b`` literal, making it easier to create
``std::byte`` values for tests.

.. cpp:function:: constexpr std::byte operator"" _b(unsigned long long value)

.. note::
   This should not be used in header files, as it requires a ``using``
   declaration that will be publicly exported at whatever level it is
   used.

Example:

.. code-block:: cpp

   #include "pw_bytes/units.h"

   using ::pw::operator""_b;

   constexpr std::byte kValue = 5_b;

pw_bytes/units.h
================
Constants, functions and user-defined literals for specifying a number of bytes
in powers of two, as defined by IEC 60027-2 A.2 and ISO/IEC 80000:13-2008.

The supported suffixes include:

* ``_B``   for bytes     (1024\ :sup:`0`)
* ``_KiB`` for kibibytes (1024\ :sup:`1`)
* ``_MiB`` for mebibytes (1024\ :sup:`2`)
* ``_GiB`` for gibibytes (1024\ :sup:`3`)
* ``_TiB`` for tebibytes (1024\ :sup:`4`)
* ``_PiB`` for pebibytes (1024\ :sup:`5`)
* ``_EiB`` for exbibytes (1024\ :sup:`6`)

In order to use these you must use a using namespace directive, for example:

.. code-block:: cpp

   #include "pw_bytes/units.h"

   using namespace pw::bytes::unit_literals;

   constexpr size_t kRandomBufferSizeBytes = 1_MiB + 42_KiB;

In some cases, the use of user-defined literals is not permitted because of the
required using namespace directive. One example of this is in header files,
where it is undesirable to pollute the namespace. For this situation, there are
also similar functions:

.. code-block:: cpp

   #include "pw_bytes/units.h"

   constexpr size_t kBufferSizeBytes = pw::bytes::MiB(1) + pw::bytes::KiB(42);

------
Zephyr
------
To enable ``pw_bytes`` for Zephyr add ``CONFIG_PIGWEED_BYTES=y`` to the
project's configuration.

--------
Rust API
--------
``pw_bytes``'s Rust API is documented in our
`rustdoc API docs </rustdoc/pw_bytes>`_.
