1 #ifndef buffer_manager_hh_INCLUDED 2 #define buffer_manager_hh_INCLUDED 3 4 #include "buffer.hh" 5 #include "vector.hh" 6 7 #include <memory> 8 9 namespace Kakoune 10 { 11 12 class BufferManager : public Singleton<BufferManager> 13 { 14 public: 15 using BufferList = Vector<std::unique_ptr<Buffer>, MemoryDomain::BufferMeta>; 16 using iterator = BufferList::const_iterator; 17 18 ~BufferManager(); 19 20 Buffer* create_buffer(String name, Buffer::Flags flags, BufferLines lines, ByteOrderMark bom, EolFormat eolformat, FsStatus fs_status); 21 22 void delete_buffer(Buffer& buffer); 23 begin() const24 iterator begin() const { return m_buffers.cbegin(); } end() const25 iterator end() const { return m_buffers.cend(); } count() const26 size_t count() const { return m_buffers.size(); } 27 28 Buffer* get_buffer_ifp(StringView name); 29 Buffer& get_buffer(StringView name); 30 31 void arrange_buffers(ConstArrayView<String> first_ones); 32 33 Buffer& get_first_buffer(); 34 35 void backup_modified_buffers(); 36 37 void clear_buffer_trash(); 38 private: 39 BufferList m_buffers; 40 BufferList m_buffer_trash; 41 }; 42 43 } 44 45 #endif // buffer_manager_hh_INCLUDED 46