C++ header-only library for expressive collection processing via pipelines
Top 43.7% on sourcepulse
This C++ library provides a header-only, C++14 implementation for creating expressive data processing pipelines. It targets developers working with collections, offering a "push-based" alternative to C++20 ranges, enabling complex data transformations and routing with a fluent, pipe-like syntax.
How It Works
The library uses a "push-based" model where data flows sequentially through a chain of components called "pipes." Each pipe receives data, performs an operation (e.g., filtering, transforming), and passes the result to the next pipe in the pipeline. This design allows for flexible data routing, including branching (fork
), merging (mux
), and conditional processing (switch
), which are distinct from the "pull-based" nature of C++20 ranges.
Quick Start & Requirements
<pipes/pipes.hpp>
.Highlighted Details
fork
(broadcast to multiple pipes), mux
(process multiple collections in parallel), cartesian_product
, and unzip
.std::copy
, std::set_difference
).read_in_stream
, to_out_stream
).map_aggregator
and set_aggregator
allow custom merging logic for elements with duplicate keys or values.Maintenance & Community
Licensing & Compatibility
Limitations & Caveats
The library is under active development and subject to change. While it offers advanced routing, it lacks features like infinite ranges found in C++20 ranges.
9 months ago
1+ week