On Tue, Sep 13, 2022 at 6:14 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote: > > This tries to get rid of the concept of defaults and overrides for line > properties from the library (or rather hide them from the users). While > this makes the C API a bit more complex, it allows for a more elegant > high-level interface. > > This patch is pretty big but I'll just give an overview here. I don't > expect a detailed review of every line. > > Low-level data structure model (as seen in the C API): > > We're adding a new structure - line_settings. It's a basic data class > that stores a set of line properties. The line_config object is simplified > and becomes a storage for the mappings between offsets and line_settings. > > We no longer require the user to store the offsets array in the > request_config. The offsets to request are simply those for which the > user explicitly added settings to the line_config. Subsequently, the > request_config structure becomes optional for the request. > > In C++ bindings this allows us to implement an elegant interface with > rust-like chained mutators. To that end, we're also introducing a new > intermediate class called request_builder that's returned by the chip's > prepare_request() method which exposes routines for storing the line > and request configs for the request we're making. For examples of > usage - see C++ tests and samples. > > Signed-off-by: Bartosz Golaszewski <brgl@xxxxxxxx> I merged this into next/libgpiod-2.0. Same for the gpiosim rework for C++. I want to progress on the python bindings front, get that into master and apply the tools changes and get those Rust bindings in too. If there are some issues, we can rework them later when doing a new API review before tagging v2.0-rc1. Bart