[roll] Roll third_party/pigweed pw_channel: Rework inheritance to avoid SiblingCast

Change pw_channel to a new inheritance pattern that places AnyChannel in
the middle of the hierarchy. The various Channel API classes are private
empty bases of AnyChannel. This ensures conversions between compatible
Channel variants are valid, since all channel implementations have all
channel variants as bases. Channel implementations extend a ChannelImpl
with properties specified in template parameters, and unsupported
functions are automatically disabled.

This change also refactors and simplifies the channel.h header.
Properties and code for checking them are moved to a properties.h
header. Also, the macros to generate ChannelImpl specializations are
greatly simplified.

Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/247732
Original-Revision: 0422de1761e52ad5d1fad821880025fc27facf1c
GitOrigin-RevId: 99613738858d5efc3c540221a9e56d812c2689ee
Change-Id: I256b276fa82c661ab8250cfa048bb7dcbccd0a6e
1 file changed
tree: d7d5cbb75965939edf08293ab9e22070ca7a2b41
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.