From 48152b9412566cf48e7d5ff09a4c88238db2cdd4 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sat, 9 Nov 2024 14:16:26 +0100 Subject: [PATCH] fix(scanner): use rvalue refs to ensure type definition isn't required --- include/dwarfs/writer/scanner.h | 8 ++++---- src/writer/scanner.cpp | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/dwarfs/writer/scanner.h b/include/dwarfs/writer/scanner.h index 1ca1e549..39faed09 100644 --- a/include/dwarfs/writer/scanner.h +++ b/include/dwarfs/writer/scanner.h @@ -51,11 +51,11 @@ class scanner { entry_factory& ef, os_access const& os, const scanner_options& options); - void add_filter(std::unique_ptr filter) { + void add_filter(std::unique_ptr&& filter) { impl_->add_filter(std::move(filter)); } - void add_transformer(std::unique_ptr transformer) { + void add_transformer(std::unique_ptr&& transformer) { impl_->add_transformer(std::move(transformer)); } @@ -71,10 +71,10 @@ class scanner { public: virtual ~impl() = default; - virtual void add_filter(std::unique_ptr filter) = 0; + virtual void add_filter(std::unique_ptr&& filter) = 0; virtual void - add_transformer(std::unique_ptr transformer) = 0; + add_transformer(std::unique_ptr&& transformer) = 0; virtual void scan(filesystem_writer& fsw, const std::filesystem::path& path, diff --git a/src/writer/scanner.cpp b/src/writer/scanner.cpp index 9a6243f0..d83b6ce8 100644 --- a/src/writer/scanner.cpp +++ b/src/writer/scanner.cpp @@ -298,9 +298,10 @@ class scanner_ final : public scanner::impl { entry_factory& ef, os_access const& os, const scanner_options& options); - void add_filter(std::unique_ptr filter) override; + void add_filter(std::unique_ptr&& filter) override; - void add_transformer(std::unique_ptr transformer) override; + void + add_transformer(std::unique_ptr&& transformer) override; void scan(filesystem_writer& fs_writer, std::filesystem::path const& path, writer_progress& wprog, @@ -335,13 +336,14 @@ class scanner_ final : public scanner::impl { }; template -void scanner_::add_filter(std::unique_ptr filter) { +void scanner_::add_filter( + std::unique_ptr&& filter) { filters_.push_back(std::move(filter)); } template void scanner_::add_transformer( - std::unique_ptr transformer) { + std::unique_ptr&& transformer) { transformers_.push_back(std::move(transformer)); }