From 429536d0f4a7c3cbb6f9c690c3d81ab4a25de581 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 22 Sep 2011 18:55:23 +0000 Subject: [PATCH] BufferManager: allow iteration on Buffers with begin/end methods --- src/buffer_manager.hh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/buffer_manager.hh b/src/buffer_manager.hh index 06fb04f0..b0cd9518 100644 --- a/src/buffer_manager.hh +++ b/src/buffer_manager.hh @@ -12,6 +12,21 @@ namespace Kakoune class BufferManager { public: + typedef std::unordered_map> BufferMap; + + struct iterator : public BufferMap::const_iterator + { + typedef BufferMap::const_iterator parent_type; + + iterator() {} + iterator(const parent_type& other) : parent_type(other) {} + Buffer& operator*() const { return *(parent_type::operator*().second); } + Buffer* operator->() const { return parent_type::operator*().second.get(); } + }; + + iterator begin() const { return iterator(m_buffers.begin()); } + iterator end() const { return iterator(m_buffers.end()); } + void register_buffer(Buffer* buffer); void delete_buffer(Buffer* buffer); @@ -23,8 +38,7 @@ public: private: BufferManager(); static BufferManager* ms_instance; - - std::unordered_map> m_buffers; + BufferMap m_buffers; }; }