summaryrefslogtreecommitdiff
path: root/src/hooks_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-11-25 14:26:29 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-11-25 14:26:29 +0000
commit9775958012ebeace0af3721fd58727f3e77e2a67 (patch)
tree0ee371f7ccdf9bfe21898479d7c5e97219854b2a /src/hooks_manager.cc
parent9a4d8d5f4d36ed64563da05970d686a6a364628d (diff)
Add a HooksManager class
Diffstat (limited to 'src/hooks_manager.cc')
-rw-r--r--src/hooks_manager.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/hooks_manager.cc b/src/hooks_manager.cc
new file mode 100644
index 00000000..7dbbaf42
--- /dev/null
+++ b/src/hooks_manager.cc
@@ -0,0 +1,22 @@
+#include "hooks_manager.hh"
+
+namespace Kakoune
+{
+
+void HooksManager::add_hook(const std::string& hook_name, HookFunc hook)
+{
+ m_hooks[hook_name].push_back(hook);
+}
+
+void HooksManager::run_hook(const std::string& hook_name,
+ const HookContext& context) const
+{
+ auto hook_list_it = m_hooks.find(hook_name);
+ if (hook_list_it == m_hooks.end())
+ return;
+
+ for (auto& hook : hook_list_it->second)
+ hook(context);
+}
+
+}