rename buffer_iterator.inl.hh as buffer.inl.hh and inline some more methods

This commit is contained in:
Maxime Coste 2014-01-12 17:19:05 +00:00
parent faabd24e11
commit 3248829f5b
3 changed files with 84 additions and 84 deletions

View File

@ -157,30 +157,6 @@ BufferCoord Buffer::offset_coord(BufferCoord coord, LineCount offset)
return {line, content.byte_count_to(character)}; return {line, content.byte_count_to(character)};
} }
BufferIterator Buffer::begin() const
{
return BufferIterator(*this, { 0_line, 0 });
}
BufferIterator Buffer::end() const
{
if (m_lines.empty())
return BufferIterator(*this, { 0_line, 0 });
return BufferIterator(*this, { line_count()-1, m_lines.back().length() });
}
ByteCount Buffer::byte_count() const
{
if (m_lines.empty())
return 0;
return m_lines.back().start + m_lines.back().length();
}
LineCount Buffer::line_count() const
{
return LineCount(m_lines.size());
}
String Buffer::string(BufferCoord begin, BufferCoord end) const String Buffer::string(BufferCoord begin, BufferCoord end) const
{ {
String res; String res;
@ -674,20 +650,6 @@ BufferCoord Buffer::advance(BufferCoord coord, ByteCount count) const
return { LineCount{ (int)(it - m_lines.begin()) }, off - it->start }; return { LineCount{ (int)(it - m_lines.begin()) }, off - it->start };
} }
BufferCoord Buffer::next(BufferCoord coord) const
{
if (coord.column < m_lines[coord.line].length() - 1)
++coord.column;
else if (coord.line == m_lines.size() - 1)
coord.column = m_lines.back().length();
else
{
++coord.line;
coord.column = 0;
}
return coord;
}
BufferCoord Buffer::char_next(BufferCoord coord) const BufferCoord Buffer::char_next(BufferCoord coord) const
{ {
if (coord.column < m_lines[coord.line].length() - 1) if (coord.column < m_lines[coord.line].length() - 1)
@ -711,18 +673,6 @@ BufferCoord Buffer::char_next(BufferCoord coord) const
return coord; return coord;
} }
BufferCoord Buffer::prev(BufferCoord coord) const
{
if (coord.column == 0)
{
if (coord.line > 0)
coord.column = m_lines[--coord.line].length() - 1;
}
else
--coord.column;
return coord;
}
BufferCoord Buffer::char_prev(BufferCoord coord) const BufferCoord Buffer::char_prev(BufferCoord coord) const
{ {
kak_assert(is_valid(coord)); kak_assert(is_valid(coord));
@ -741,36 +691,6 @@ BufferCoord Buffer::char_prev(BufferCoord coord) const
return coord; return coord;
} }
ByteCount Buffer::distance(BufferCoord begin, BufferCoord end) const
{
return offset(end) - offset(begin);
}
ByteCount Buffer::offset(BufferCoord c) const
{
if (c.line == line_count())
return m_lines.back().start + m_lines.back().length();
return m_lines[c.line].start + c.column;
}
bool Buffer::is_valid(BufferCoord c) const
{
return (c.line < line_count() and c.column < m_lines[c.line].length()) or
(c.line == line_count() - 1 and c.column == m_lines.back().length()) or
(c.line == line_count() and c.column == 0);
}
bool Buffer::is_end(BufferCoord c) const
{
return c >= BufferCoord{line_count() - 1, m_lines.back().length()};
}
char Buffer::byte_at(BufferCoord c) const
{
kak_assert(c.line < line_count() and c.column < m_lines[c.line].length());
return m_lines[c.line].content[c.column];
}
time_t Buffer::fs_timestamp() const time_t Buffer::fs_timestamp() const
{ {
kak_assert(m_flags & Flags::File); kak_assert(m_flags & Flags::File);

View File

@ -287,6 +287,6 @@ public:
} }
#include "buffer_iterator.inl.hh" #include "buffer.inl.hh"
#endif // buffer_hh_INCLUDED #endif // buffer_hh_INCLUDED

View File

@ -1,11 +1,91 @@
#ifndef buffer_iterator_inl_h_INCLUDED #ifndef buffer_inl_h_INCLUDED
#define buffer_iterator_inl_h_INCLUDED #define buffer_inl_h_INCLUDED
#include "assert.hh" #include "assert.hh"
namespace Kakoune namespace Kakoune
{ {
inline char Buffer::byte_at(BufferCoord c) const
{
kak_assert(c.line < line_count() and c.column < m_lines[c.line].length());
return m_lines[c.line].content[c.column];
}
inline BufferCoord Buffer::next(BufferCoord coord) const
{
if (coord.column < m_lines[coord.line].length() - 1)
++coord.column;
else if (coord.line == m_lines.size() - 1)
coord.column = m_lines.back().length();
else
{
++coord.line;
coord.column = 0;
}
return coord;
}
inline BufferCoord Buffer::prev(BufferCoord coord) const
{
if (coord.column == 0)
{
if (coord.line > 0)
coord.column = m_lines[--coord.line].length() - 1;
}
else
--coord.column;
return coord;
}
inline ByteCount Buffer::distance(BufferCoord begin, BufferCoord end) const
{
return offset(end) - offset(begin);
}
inline ByteCount Buffer::offset(BufferCoord c) const
{
if (c.line == line_count())
return m_lines.back().start + m_lines.back().length();
return m_lines[c.line].start + c.column;
}
inline bool Buffer::is_valid(BufferCoord c) const
{
return (c.line < line_count() and c.column < m_lines[c.line].length()) or
(c.line == line_count() - 1 and c.column == m_lines.back().length()) or
(c.line == line_count() and c.column == 0);
}
inline bool Buffer::is_end(BufferCoord c) const
{
return c >= BufferCoord{line_count() - 1, m_lines.back().length()};
}
inline BufferIterator Buffer::begin() const
{
return BufferIterator(*this, { 0_line, 0 });
}
inline BufferIterator Buffer::end() const
{
if (m_lines.empty())
return BufferIterator(*this, { 0_line, 0 });
return BufferIterator(*this, { line_count()-1, m_lines.back().length() });
}
inline ByteCount Buffer::byte_count() const
{
if (m_lines.empty())
return 0;
return m_lines.back().start + m_lines.back().length();
}
inline LineCount Buffer::line_count() const
{
return LineCount(m_lines.size());
}
inline BufferIterator::BufferIterator(const Buffer& buffer, BufferCoord coord) inline BufferIterator::BufferIterator(const Buffer& buffer, BufferCoord coord)
: m_buffer(&buffer), m_coord(coord) : m_buffer(&buffer), m_coord(coord)
{ {
@ -110,4 +190,4 @@ inline BufferIterator BufferIterator::operator--(int)
} }
} }
#endif // buffer_iterator_inl_h_INCLUDED #endif // buffer_inl_h_INCLUDED