aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-08-07 16:13:13 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-08-08 10:53:07 +0100
commit2071e4f42961487f4a7e1c565790bc2647f344bf (patch)
tree52191a1c138fcb8d5b6016d26718f0e719ed23fc
parent3a05acca946f4a14096a14e77f3af76e67c9fa84 (diff)
downloadpaludis-2071e4f42961487f4a7e1c565790bc2647f344bf.tar.gz
paludis-2071e4f42961487f4a7e1c565790bc2647f344bf.tar.xz
MakeUnmaskableFilterHelper
-rw-r--r--paludis/files.m41
-rw-r--r--paludis/mask_utils-fwd.hh (renamed from src/clients/cave/not_strongly_masked.hh)9
-rw-r--r--paludis/mask_utils.cc (renamed from src/clients/cave/not_strongly_masked.cc)5
-rw-r--r--paludis/mask_utils.hh30
-rw-r--r--paludis/resolver/Makefile.am2
-rw-r--r--paludis/resolver/make_unmaskable_filter_helper-fwd.hh31
-rw-r--r--paludis/resolver/make_unmaskable_filter_helper.cc110
-rw-r--r--paludis/resolver/make_unmaskable_filter_helper.hh51
-rw-r--r--paludis/resolver/resolver_test.cc12
-rw-r--r--paludis/resolver/resolver_test.hh5
-rw-r--r--src/clients/cave/Makefile.am1
-rw-r--r--src/clients/cave/cmd_display_resolution.cc2
-rw-r--r--src/clients/cave/cmd_show.cc2
-rw-r--r--src/clients/cave/resolve_common.cc52
14 files changed, 244 insertions, 69 deletions
diff --git a/paludis/files.m4 b/paludis/files.m4
index 43e7a7c..c8c10e9 100644
--- a/paludis/files.m4
+++ b/paludis/files.m4
@@ -64,6 +64,7 @@ add(`libtool_linkage_checker', `hh', `cc')
add(`linkage_checker', `hh', `cc')
add(`literal_metadata_key', `hh', `cc')
add(`mask', `hh', `cc', `fwd', `se')
+add(`mask_utils', `hh', `cc', `fwd')
add(`match_package', `hh', `cc', `se', `fwd')
add(`merger', `hh', `cc', `se', `fwd')
add(`merger_entry_type', `hh', `cc', `se')
diff --git a/src/clients/cave/not_strongly_masked.hh b/paludis/mask_utils-fwd.hh
index 97f4d33..f2b2681 100644
--- a/src/clients/cave/not_strongly_masked.hh
+++ b/paludis/mask_utils-fwd.hh
@@ -17,8 +17,8 @@
* Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef PALUDIS_GUARD_SRC_CLIENTS_CAVE_NOT_STRONGLY_MASKED_HH
-#define PALUDIS_GUARD_SRC_CLIENTS_CAVE_NOT_STRONGLY_MASKED_HH 1
+#ifndef PALUDIS_GUARD_PALUDIS_MASK_UTILS_FWD_HH
+#define PALUDIS_GUARD_PALUDIS_MASK_UTILS_FWD_HH 1
#include <paludis/package_id-fwd.hh>
#include <paludis/util/attributes.hh>
@@ -26,10 +26,7 @@
namespace paludis
{
- namespace cave
- {
- bool not_strongly_masked(const std::shared_ptr<const PackageID> &) PALUDIS_ATTRIBUTE((warn_unused_result));
- }
+ bool not_strongly_masked(const std::shared_ptr<const PackageID> &) PALUDIS_ATTRIBUTE((warn_unused_result)) PALUDIS_VISIBLE;
}
#endif
diff --git a/src/clients/cave/not_strongly_masked.cc b/paludis/mask_utils.cc
index 0374f31..6ffcc0d 100644
--- a/src/clients/cave/not_strongly_masked.cc
+++ b/paludis/mask_utils.cc
@@ -17,12 +17,11 @@
* Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "not_strongly_masked.hh"
+#include <paludis/mask_utils.hh>
#include <paludis/package_id.hh>
#include <paludis/mask.hh>
using namespace paludis;
-using namespace cave;
namespace
{
@@ -56,7 +55,7 @@ namespace
}
bool
-paludis::cave::not_strongly_masked(const std::shared_ptr<const PackageID> & id)
+paludis::not_strongly_masked(const std::shared_ptr<const PackageID> & id)
{
for (auto m(id->begin_masks()), m_end(id->end_masks()) ;
m != m_end ; ++m)
diff --git a/paludis/mask_utils.hh b/paludis/mask_utils.hh
new file mode 100644
index 0000000..6d0ab87
--- /dev/null
+++ b/paludis/mask_utils.hh
@@ -0,0 +1,30 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_PALUDIS_MASK_UTILS_HH
+#define PALUDIS_GUARD_PALUDIS_MASK_UTILS_HH 1
+
+#include <paludis/mask_utils-fwd.hh>
+
+namespace paludis
+{
+
+}
+
+#endif
diff --git a/paludis/resolver/Makefile.am b/paludis/resolver/Makefile.am
index a60c43a..770e192 100644
--- a/paludis/resolver/Makefile.am
+++ b/paludis/resolver/Makefile.am
@@ -54,6 +54,7 @@ noinst_HEADERS = \
job_requirements.hh job_requirements-fwd.hh \
job_state.hh job_state-fwd.hh \
labels_classifier.hh labels_classifier-fwd.hh \
+ make_unmaskable_filter_helper.hh make_unmaskable_filter_helper-fwd.hh \
nag.hh nag-fwd.hh \
order_early_helper.hh order_early_helper-fwd.hh \
orderer.hh orderer-fwd.hh \
@@ -104,6 +105,7 @@ libpaludisresolver_a_SOURCES = \
job_requirements.cc \
job_state.cc \
labels_classifier.cc \
+ make_unmaskable_filter_helper.cc \
nag.cc \
order_early_helper.cc \
orderer.cc \
diff --git a/paludis/resolver/make_unmaskable_filter_helper-fwd.hh b/paludis/resolver/make_unmaskable_filter_helper-fwd.hh
new file mode 100644
index 0000000..d3bf86d
--- /dev/null
+++ b/paludis/resolver/make_unmaskable_filter_helper-fwd.hh
@@ -0,0 +1,31 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_PALUDIS_RESOLVER_MAKE_UNMASKABLE_FILTER_HELPER_FWD_HH
+#define PALUDIS_GUARD_PALUDIS_RESOLVER_MAKE_UNMASKABLE_FILTER_HELPER_FWD_HH 1
+
+namespace paludis
+{
+ namespace resolver
+ {
+ struct MakeUnmaskableFilterHelper;
+ }
+}
+
+#endif
diff --git a/paludis/resolver/make_unmaskable_filter_helper.cc b/paludis/resolver/make_unmaskable_filter_helper.cc
new file mode 100644
index 0000000..f63ea73
--- /dev/null
+++ b/paludis/resolver/make_unmaskable_filter_helper.cc
@@ -0,0 +1,110 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <paludis/resolver/make_unmaskable_filter_helper.hh>
+#include <paludis/resolver/reason.hh>
+#include <paludis/resolver/constraint.hh>
+#include <paludis/resolver/resolvent.hh>
+#include <paludis/resolver/resolution.hh>
+#include <paludis/util/pimp-impl.hh>
+#include <paludis/util/set.hh>
+#include <paludis/filter.hh>
+#include <paludis/filter_handler.hh>
+#include <paludis/mask.hh>
+#include <paludis/mask_utils.hh>
+
+using namespace paludis;
+using namespace paludis::resolver;
+
+namespace paludis
+{
+ template <>
+ struct Imp<MakeUnmaskableFilterHelper>
+ {
+ const Environment * const env;
+ bool override_masks;
+
+ Imp(const Environment * const e) :
+ env(e),
+ override_masks(true)
+ {
+ }
+ };
+}
+
+MakeUnmaskableFilterHelper::MakeUnmaskableFilterHelper(const Environment * const e) :
+ Pimp<MakeUnmaskableFilterHelper>(e)
+{
+}
+
+MakeUnmaskableFilterHelper::~MakeUnmaskableFilterHelper() = default;
+
+void
+MakeUnmaskableFilterHelper::set_override_masks(const bool v)
+{
+ _imp->override_masks = v;
+}
+
+namespace
+{
+ struct UnmaskableFilterHandler :
+ AllFilterHandlerBase
+ {
+ virtual std::shared_ptr<const PackageIDSet> ids(
+ const Environment * const,
+ const std::shared_ptr<const PackageIDSet> & id) const
+ {
+ std::shared_ptr<PackageIDSet> result(std::make_shared<PackageIDSet>());
+
+ for (PackageIDSet::ConstIterator i(id->begin()), i_end(id->end()) ;
+ i != i_end ; ++i)
+ if (not_strongly_masked(*i))
+ result->insert(*i);
+
+ return result;
+ }
+
+ virtual std::string as_string() const
+ {
+ return "unmaskable";
+ }
+ };
+
+ struct UnmaskableFilter :
+ Filter
+ {
+ UnmaskableFilter() :
+ Filter(std::make_shared<UnmaskableFilterHandler>())
+ {
+ }
+ };
+}
+
+Filter
+MakeUnmaskableFilterHelper::operator() (
+ const std::shared_ptr<const Resolution> &) const
+{
+ if (_imp->override_masks)
+ return UnmaskableFilter();
+ else
+ return filter::NotMasked();
+}
+
+template class Pimp<MakeUnmaskableFilterHelper>;
+
diff --git a/paludis/resolver/make_unmaskable_filter_helper.hh b/paludis/resolver/make_unmaskable_filter_helper.hh
new file mode 100644
index 0000000..930ebca
--- /dev/null
+++ b/paludis/resolver/make_unmaskable_filter_helper.hh
@@ -0,0 +1,51 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_PALUDIS_RESOLVER_MAKE_UNMASKABLE_FILTER_HELPER_HH
+#define PALUDIS_GUARD_PALUDIS_RESOLVER_MAKE_UNMASKABLE_FILTER_HELPER_HH 1
+
+#include <paludis/resolver/make_unmaskable_filter_helper-fwd.hh>
+#include <paludis/resolver/resolution-fwd.hh>
+#include <paludis/util/pimp.hh>
+#include <paludis/util/attributes.hh>
+#include <paludis/environment-fwd.hh>
+#include <paludis/filter-fwd.hh>
+#include <memory>
+
+namespace paludis
+{
+ namespace resolver
+ {
+ class PALUDIS_VISIBLE MakeUnmaskableFilterHelper :
+ private Pimp<MakeUnmaskableFilterHelper>
+ {
+ public:
+ explicit MakeUnmaskableFilterHelper(const Environment * const);
+ ~MakeUnmaskableFilterHelper();
+
+ void set_override_masks(const bool);
+
+ Filter operator() (const std::shared_ptr<const Resolution> &) const;
+ };
+ }
+
+ extern template class Pimp<resolver::MakeUnmaskableFilterHelper>;
+}
+
+#endif
diff --git a/paludis/resolver/resolver_test.cc b/paludis/resolver/resolver_test.cc
index bf4302a..498e1cc 100644
--- a/paludis/resolver/resolver_test.cc
+++ b/paludis/resolver/resolver_test.cc
@@ -137,13 +137,6 @@ paludis::resolver::resolver_test::make_origin_filtered_generator_fn(const Genera
return g;
}
-Filter
-paludis::resolver::resolver_test::make_unmaskable_filter_fn(
- const std::shared_ptr<const Resolution> &)
-{
- return filter::NotMasked();
-}
-
namespace
{
#ifdef ENABLE_VIRTUALS_REPOSITORY
@@ -201,6 +194,7 @@ ResolverTestCase::ResolverTestCase(const std::string & t, const std::string & s,
get_constraints_for_purge_helper(&env),
get_constraints_for_via_binary_helper(&env),
get_destination_types_for_error_helper(&env),
+ make_unmaskable_filter_helper(&env),
order_early_helper(&env),
prefer_or_avoid_helper(&env),
remove_if_dependent_helper(&env)
@@ -243,6 +237,8 @@ ResolverTestCase::ResolverTestCase(const std::string & t, const std::string & s,
env.package_database()->add_repository(0, RepositoryFactory::get_instance()->create(&env, virtuals_repo_keys));
env.package_database()->add_repository(0, RepositoryFactory::get_instance()->create(&env, installed_virtuals_repo_keys));
#endif
+
+ make_unmaskable_filter_helper.set_override_masks(false);
}
ResolverFunctions
@@ -268,7 +264,7 @@ ResolverTestCase::get_resolver_functions(InitialConstraints & initial_constraint
n::interest_in_spec_fn() = &interest_in_spec_fn,
n::make_destination_filtered_generator_fn() = &make_destination_filtered_generator_fn,
n::make_origin_filtered_generator_fn() = &make_origin_filtered_generator_fn,
- n::make_unmaskable_filter_fn() = &make_unmaskable_filter_fn,
+ n::make_unmaskable_filter_fn() = std::cref(make_unmaskable_filter_helper),
n::order_early_fn() = std::cref(order_early_helper),
n::prefer_or_avoid_fn() = std::cref(prefer_or_avoid_helper),
n::remove_if_dependent_fn() = std::cref(remove_if_dependent_helper)
diff --git a/paludis/resolver/resolver_test.hh b/paludis/resolver/resolver_test.hh
index 8f979cb..f780620 100644
--- a/paludis/resolver/resolver_test.hh
+++ b/paludis/resolver/resolver_test.hh
@@ -45,6 +45,7 @@
#include <paludis/resolver/get_constraints_for_purge_helper.hh>
#include <paludis/resolver/get_constraints_for_via_binary_helper.hh>
#include <paludis/resolver/get_destination_types_for_error_helper.hh>
+#include <paludis/resolver/make_unmaskable_filter_helper.hh>
#include <paludis/resolver/order_early_helper.hh>
#include <paludis/resolver/remove_if_dependent_helper.hh>
#include <paludis/resolver/prefer_or_avoid_helper.hh>
@@ -103,9 +104,6 @@ namespace paludis
FilteredGenerator make_origin_filtered_generator_fn(const Generator &,
const std::shared_ptr<const Resolution> &);
- Filter make_unmaskable_filter_fn(
- const std::shared_ptr<const Resolution> &);
-
struct ResolverTestCase : test::TestCase
{
TestEnvironment env;
@@ -122,6 +120,7 @@ namespace paludis
GetConstraintsForPurgeHelper get_constraints_for_purge_helper;
GetConstraintsForViaBinaryHelper get_constraints_for_via_binary_helper;
GetDestinationTypesForErrorHelper get_destination_types_for_error_helper;
+ MakeUnmaskableFilterHelper make_unmaskable_filter_helper;
OrderEarlyHelper order_early_helper;
PreferOrAvoidHelper prefer_or_avoid_helper;
RemoveIfDependentHelper remove_if_dependent_helper;
diff --git a/src/clients/cave/Makefile.am b/src/clients/cave/Makefile.am
index bff79f9..ad45fb0 100644
--- a/src/clients/cave/Makefile.am
+++ b/src/clients/cave/Makefile.am
@@ -156,7 +156,6 @@ libcave_a_SOURCES = \
script_command.cc script_command.hh \
select_format_for_spec.cc select_format_for_spec.hh \
match_qpns.cc match_qpns.hh \
- not_strongly_masked.cc not_strongly_masked.hh \
owner_common.cc owner_common.hh \
resolve_common.cc resolve_common.hh \
resume_data.cc resume_data.hh
diff --git a/src/clients/cave/cmd_display_resolution.cc b/src/clients/cave/cmd_display_resolution.cc
index 89be254..8ab480b 100644
--- a/src/clients/cave/cmd_display_resolution.cc
+++ b/src/clients/cave/cmd_display_resolution.cc
@@ -24,7 +24,6 @@
#include "formats.hh"
#include "colour_formatter.hh"
#include "match_qpns.hh"
-#include "not_strongly_masked.hh"
#include <paludis/args/do_help.hh>
#include <paludis/util/safe_ifstream.hh>
#include <paludis/util/system.hh>
@@ -76,6 +75,7 @@
#include <paludis/output_manager_from_environment.hh>
#include <paludis/output_manager.hh>
#include <paludis/changed_choices.hh>
+#include <paludis/mask_utils.hh>
#include <set>
#include <iterator>
diff --git a/src/clients/cave/cmd_show.cc b/src/clients/cave/cmd_show.cc
index 1b58fef..6b3df50 100644
--- a/src/clients/cave/cmd_show.cc
+++ b/src/clients/cave/cmd_show.cc
@@ -23,7 +23,6 @@
#include "formats.hh"
#include "exceptions.hh"
#include "select_format_for_spec.hh"
-#include "not_strongly_masked.hh"
#include <paludis/args/args.hh>
#include <paludis/args/do_help.hh>
#include <paludis/name.hh>
@@ -49,6 +48,7 @@
#include <paludis/mask.hh>
#include <paludis/choice.hh>
#include <paludis/partially_made_package_dep_spec.hh>
+#include <paludis/mask_utils.hh>
#include <cstdlib>
#include <iostream>
#include <algorithm>
diff --git a/src/clients/cave/resolve_common.cc b/src/clients/cave/resolve_common.cc
index c4126df..dc9d2cb 100644
--- a/src/clients/cave/resolve_common.cc
+++ b/src/clients/cave/resolve_common.cc
@@ -25,7 +25,6 @@
#include "exceptions.hh"
#include "command_command_line.hh"
#include "match_qpns.hh"
-#include "not_strongly_masked.hh"
#include <paludis/util/mutex.hh>
#include <paludis/util/stringify.hh>
@@ -75,6 +74,7 @@
#include <paludis/resolver/get_constraints_for_purge_helper.hh>
#include <paludis/resolver/get_constraints_for_via_binary_helper.hh>
#include <paludis/resolver/get_destination_types_for_error_helper.hh>
+#include <paludis/resolver/make_unmaskable_filter_helper.hh>
#include <paludis/resolver/order_early_helper.hh>
#include <paludis/resolver/remove_if_dependent_helper.hh>
#include <paludis/resolver/prefer_or_avoid_helper.hh>
@@ -97,6 +97,7 @@
#include <paludis/elike_slot_requirement.hh>
#include <paludis/package_id.hh>
#include <paludis/partially_made_package_dep_spec.hh>
+#include <paludis/mask_utils.hh>
#include <algorithm>
#include <iostream>
@@ -132,29 +133,6 @@ namespace
return id->behaviours_key()->value()->end() == id->behaviours_key()->value()->find("unchrootable");
}
- struct UnmaskableFilterHandler :
- AllFilterHandlerBase
- {
- virtual std::shared_ptr<const PackageIDSet> ids(
- const Environment * const,
- const std::shared_ptr<const PackageIDSet> & id) const
- {
- std::shared_ptr<PackageIDSet> result(std::make_shared<PackageIDSet>());
-
- for (PackageIDSet::ConstIterator i(id->begin()), i_end(id->end()) ;
- i != i_end ; ++i)
- if (not_strongly_masked(*i))
- result->insert(*i);
-
- return result;
- }
-
- virtual std::string as_string() const
- {
- return "unmaskable";
- }
- };
-
struct BinaryableFilterHandler :
AllFilterHandlerBase
{
@@ -178,15 +156,6 @@ namespace
}
};
- struct UnmaskableFilter :
- Filter
- {
- UnmaskableFilter() :
- Filter(std::make_shared<UnmaskableFilterHandler>())
- {
- }
- };
-
struct BinaryableFilter :
Filter
{
@@ -357,17 +326,6 @@ namespace
return g;
}
- Filter make_unmaskable_filter_fn(
- const Environment * const,
- const ResolveCommandLineResolutionOptions & cmdline,
- const std::shared_ptr<const Resolution> &)
- {
- if (cmdline.a_no_override_masks.specified())
- return filter::NotMasked();
- else
- return UnmaskableFilter();
- }
-
const std::shared_ptr<const Sequence<std::string> > add_resolver_targets(
const std::shared_ptr<Environment> & env,
const std::shared_ptr<Resolver> & resolver,
@@ -1593,6 +1551,9 @@ paludis::cave::resolve_common(
throw args::DoHelp("Don't understand argument '" + resolution_options.a_make.argument() + "' to '--"
+ resolution_options.a_make.long_name() + "'");
+ MakeUnmaskableFilterHelper make_unmaskable_filter_helper(env.get());
+ make_unmaskable_filter_helper.set_override_masks(! resolution_options.a_no_override_masks.specified());
+
OrderEarlyHelper order_early_helper(env.get());
for (args::StringSetArg::ConstIterator i(resolution_options.a_early.begin_args()),
i_end(resolution_options.a_early.end_args()) ;
@@ -1646,8 +1607,7 @@ paludis::cave::resolve_common(
env.get(), std::cref(resolution_options), binary_destinations, _1, _2),
n::make_origin_filtered_generator_fn() = std::bind(&make_origin_filtered_generator,
env.get(), std::cref(resolution_options), _1, _2),
- n::make_unmaskable_filter_fn() = std::bind(&make_unmaskable_filter_fn,
- env.get(), std::cref(resolution_options), _1),
+ n::make_unmaskable_filter_fn() = std::cref(make_unmaskable_filter_helper),
n::order_early_fn() = std::cref(order_early_helper),
n::prefer_or_avoid_fn() = std::cref(prefer_or_avoid_helper),
n::remove_if_dependent_fn() = std::cref(remove_if_dependent_helper)