From e9609dfea5a8210f9e1a23c0d80f53df7664e71a Mon Sep 17 00:00:00 2001 From: Lexi Winter Date: Thu, 3 Jul 2025 19:46:01 +0100 Subject: cli: add a basic command-line option parser --- nihil.cli/registry.ccm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'nihil.cli/registry.ccm') 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 ®istry = 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 -- cgit v1.2.3