mirror of
https://github.com/NixOS/nix.git
synced 2025-11-28 13:11:00 +01:00
LambdaSink: Allow passing a destructor callback
This commit is contained in:
parent
d1470f76c7
commit
d7b6afecdb
1 changed files with 14 additions and 5 deletions
|
|
@ -447,18 +447,27 @@ struct LengthSource : Source
|
|||
*/
|
||||
struct LambdaSink : Sink
|
||||
{
|
||||
typedef std::function<void(std::string_view data)> lambda_t;
|
||||
typedef std::function<void(std::string_view data)> data_t;
|
||||
typedef std::function<void()> cleanup_t;
|
||||
|
||||
lambda_t lambda;
|
||||
data_t dataFun;
|
||||
cleanup_t cleanupFun;
|
||||
|
||||
LambdaSink(const lambda_t & lambda)
|
||||
: lambda(lambda)
|
||||
LambdaSink(
|
||||
const data_t & dataFun, const cleanup_t & cleanupFun = []() {})
|
||||
: dataFun(dataFun)
|
||||
, cleanupFun(cleanupFun)
|
||||
{
|
||||
}
|
||||
|
||||
~LambdaSink()
|
||||
{
|
||||
cleanupFun();
|
||||
}
|
||||
|
||||
void operator()(std::string_view data) override
|
||||
{
|
||||
lambda(data);
|
||||
dataFun(data);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue