summaryrefslogtreecommitdiff
path: root/src/buffer_manager.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-09-08 00:11:48 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-09-08 00:11:48 +0000
commit535e2005870ce6e0822418307bde22b09b8db3df (patch)
tree251446a697f0609e29b28b96484c0bf6bdc25d33 /src/buffer_manager.hh
parent511df5b6605b6dd6d350dac4643cd1255771d869 (diff)
Add a BufferManager singleton class, handling buffer lifetime
it also provide access to buffers by name
Diffstat (limited to 'src/buffer_manager.hh')
-rw-r--r--src/buffer_manager.hh32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/buffer_manager.hh b/src/buffer_manager.hh
new file mode 100644
index 00000000..06fb04f0
--- /dev/null
+++ b/src/buffer_manager.hh
@@ -0,0 +1,32 @@
+#ifndef buffer_manager_hh_INCLUDED
+#define buffer_manager_hh_INCLUDED
+
+#include "buffer.hh"
+
+#include <unordered_map>
+#include <memory>
+
+namespace Kakoune
+{
+
+class BufferManager
+{
+public:
+ void register_buffer(Buffer* buffer);
+ void delete_buffer(Buffer* buffer);
+
+ Buffer* get_buffer(const std::string& name);
+
+ static BufferManager& instance();
+ static void delete_instance();
+
+private:
+ BufferManager();
+ static BufferManager* ms_instance;
+
+ std::unordered_map<std::string, std::unique_ptr<Buffer>> m_buffers;
+};
+
+}
+
+#endif // buffer_manager_hh_INCLUDED