diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-01-19 19:31:56 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-01-19 19:31:56 +0000 |
| commit | b1281d225d5baa73dc0763627d18bb45a4dc97b2 (patch) | |
| tree | 587563a28812f1400921763e3b936fd306e695a0 /src/buffer.hh | |
| parent | 3697548e35d8edb2558217b129db9fec89137c34 (diff) | |
rename SharedString::Storage to StringStorage and use directly in Buffer
Diffstat (limited to 'src/buffer.hh')
| -rw-r--r-- | src/buffer.hh | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/buffer.hh b/src/buffer.hh index 6121d36f..e36d5580 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -121,9 +121,12 @@ public: BufferIterator end() const; LineCount line_count() const; - const SharedString& operator[](LineCount line) const + StringView operator[](LineCount line) const { return m_lines[line]; } + SharedString shared_line(LineCount line) const + { return m_lines.get_shared(line); } + // returns an iterator at given coordinates. clamp line_and_column BufferIterator iterator_at(ByteCoord coord) const; @@ -166,16 +169,27 @@ private: void on_option_changed(const Option& option) override; - using LineListBase = Vector<SharedString, MemoryDomain::BufferContent>; + using LineListBase = Vector<ref_ptr<StringStorage>, MemoryDomain::BufferContent>; struct LineList : LineListBase { [[gnu::always_inline]] - SharedString& operator[](LineCount line) + ref_ptr<StringStorage>& get_storage(LineCount line) { return LineListBase::operator[]((int)line); } [[gnu::always_inline]] - const SharedString& operator[](LineCount line) const + const ref_ptr<StringStorage>& get_storage(LineCount line) const { return LineListBase::operator[]((int)line); } + + [[gnu::always_inline]] + SharedString get_shared(LineCount line) const + { return SharedString{get_storage(line)}; } + + [[gnu::always_inline]] + StringView operator[](LineCount line) const + { return get_storage(line)->strview(); } + + StringView front() const { return LineListBase::front()->strview(); } + StringView back() const { return LineListBase::back()->strview(); } }; LineList m_lines; |
