aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.cli/registry.ccm
diff options
context:
space:
mode:
Diffstat (limited to 'nihil.cli/registry.ccm')
-rw-r--r--nihil.cli/registry.ccm14
1 files changed, 14 insertions, 0 deletions
diff --git a/nihil.cli/registry.ccm b/nihil.cli/registry.ccm
index 5e31195..1b104b0 100644
--- a/nihil.cli/registry.ccm
+++ b/nihil.cli/registry.ccm
@@ -31,4 +31,18 @@ auto register_command(command *cmd) noexcept -> void
get_registry().emplace_back(cmd, null_deleter);
}
+// Unregister a command. This is not very efficient, but it shouldn't usually be called
+// except during testing.
+auto unregister_command(command *cmd) noexcept -> void
+{
+ auto &registry = get_registry();
+
+ auto it = std::ranges::find_if(registry, [=] (auto c) -> bool {
+ return c.get() == cmd;
+ });
+
+ if (it != std::ranges::end(registry))
+ registry.erase(it);
+}
+
} // namespace nihil