diff options
| author | Maxime Coste <mawww@kakoune.org> | 2025-07-08 11:43:17 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2025-07-08 12:07:33 +1000 |
| commit | ce1d512a0c1922ab5f43f28e7bae573508c98601 (patch) | |
| tree | 7af8effd6b00c304cda1c87f657a0014fcdae2ae /src/hook_manager.cc | |
| parent | fea08fc18d268ace4f843ec2b57cc33e36562098 (diff) | |
Replace std::unique_ptr with a custom implementation
<memory> is a costly header we can avoid by just implementing
UniquePtr ourselves, which is a pretty straightforward in modern
C++, this saves around 10% of the compilation time here.
Diffstat (limited to 'src/hook_manager.cc')
| -rw-r--r-- | src/hook_manager.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/hook_manager.cc b/src/hook_manager.cc index ee461a83..31634e9d 100644 --- a/src/hook_manager.cc +++ b/src/hook_manager.cc @@ -56,7 +56,7 @@ HookManager::~HookManager() = default; void HookManager::add_hook(Hook hook, String group, HookFlags flags, Regex filter, String commands, Context& context) { - std::unique_ptr<HookData> hook_data{new HookData{std::move(group), flags, std::move(filter), std::move(commands)}}; + UniquePtr<HookData> hook_data{new HookData{std::move(group), flags, std::move(filter), std::move(commands)}}; if (hook == Hook::ModuleLoaded) { const bool only_always = context.hooks_disabled(); @@ -80,7 +80,7 @@ void HookManager::remove_hooks(const Regex& regex) { for (auto& list : m_hooks) { - list.erase(remove_if(list, [this, ®ex](std::unique_ptr<HookData>& h) { + list.erase(remove_if(list, [this, ®ex](UniquePtr<HookData>& h) { if (not regex_match(h->group.begin(), h->group.end(), regex)) return false; m_hooks_trash.push_back(std::move(h)); @@ -94,7 +94,7 @@ CandidateList HookManager::complete_hook_group(StringView prefix, ByteCount pos_ CandidateList res; for (auto& list : m_hooks) { - auto container = list | transform([](const std::unique_ptr<HookData>& h) -> const String& { return h->group; }); + auto container = list | transform([](const UniquePtr<HookData>& h) -> const String& { return h->group; }); for (auto& c : complete(prefix, pos_in_token, container)) { if (!contains(res, c)) |
