fix(scanner): use rvalue refs to ensure type definition isn't required

This commit is contained in:
Marcus Holland-Moritz 2024-11-09 14:16:26 +01:00
parent 86a751ebc3
commit 48152b9412
2 changed files with 10 additions and 8 deletions

View File

@ -51,11 +51,11 @@ class scanner {
entry_factory& ef, os_access const& os,
const scanner_options& options);
void add_filter(std::unique_ptr<entry_filter> filter) {
void add_filter(std::unique_ptr<entry_filter>&& filter) {
impl_->add_filter(std::move(filter));
}
void add_transformer(std::unique_ptr<entry_transformer> transformer) {
void add_transformer(std::unique_ptr<entry_transformer>&& transformer) {
impl_->add_transformer(std::move(transformer));
}
@ -71,10 +71,10 @@ class scanner {
public:
virtual ~impl() = default;
virtual void add_filter(std::unique_ptr<entry_filter> filter) = 0;
virtual void add_filter(std::unique_ptr<entry_filter>&& filter) = 0;
virtual void
add_transformer(std::unique_ptr<entry_transformer> transformer) = 0;
add_transformer(std::unique_ptr<entry_transformer>&& transformer) = 0;
virtual void
scan(filesystem_writer& fsw, const std::filesystem::path& path,

View File

@ -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<entry_filter> filter) override;
void add_filter(std::unique_ptr<entry_filter>&& filter) override;
void add_transformer(std::unique_ptr<entry_transformer> transformer) override;
void
add_transformer(std::unique_ptr<entry_transformer>&& 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 <typename LoggerPolicy>
void scanner_<LoggerPolicy>::add_filter(std::unique_ptr<entry_filter> filter) {
void scanner_<LoggerPolicy>::add_filter(
std::unique_ptr<entry_filter>&& filter) {
filters_.push_back(std::move(filter));
}
template <typename LoggerPolicy>
void scanner_<LoggerPolicy>::add_transformer(
std::unique_ptr<entry_transformer> transformer) {
std::unique_ptr<entry_transformer>&& transformer) {
transformers_.push_back(std::move(transformer));
}