Always inline a few more methods

This commit is contained in:
Maxime Coste 2014-08-17 15:36:12 +01:00
parent 5c3f01fea2
commit 6ba3017a8e
2 changed files with 10 additions and 0 deletions

View File

@ -188,6 +188,7 @@ inline BufferIterator& BufferIterator::operator-=(ByteCount size)
return *this = (*this - size);
}
[[gnu::always_inline]]
inline BufferIterator& BufferIterator::operator++()
{
m_coord = m_buffer->next(m_coord);

View File

@ -33,9 +33,13 @@ public:
std::string& stdstr() { return *this; }
const std::string& stdstr() const { return *this; }
[[gnu::always_inline]]
char operator[](ByteCount pos) const { return std::string::operator[]((int)pos); }
[[gnu::always_inline]]
char& operator[](ByteCount pos) { return std::string::operator[]((int)pos); }
Codepoint operator[](CharCount pos) { return utf8::codepoint(utf8::advance(begin(), end(), pos), end()); }
[[gnu::always_inline]]
ByteCount length() const { return ByteCount{(int)std::string::length()}; }
CharCount char_length() const { return utf8::distance(begin(), end()); }
ByteCount byte_count_to(CharCount count) const { return utf8::advance(begin(), end(), (int)count) - begin(); }
@ -67,6 +71,7 @@ public:
bool operator==(StringView other) const;
bool operator!=(StringView other) const;
[[gnu::always_inline]]
const char* data() const { return m_data; }
using iterator = const char*;
@ -81,11 +86,15 @@ public:
char front() const { return *m_data; }
char back() const { return m_data[(int)m_length - 1]; }
[[gnu::always_inline]]
char operator[](ByteCount pos) const { return m_data[(int)pos]; }
Codepoint operator[](CharCount pos) { return utf8::codepoint(utf8::advance(begin(), end(), pos), end()); }
[[gnu::always_inline]]
ByteCount length() const { return m_length; }
CharCount char_length() const { return utf8::distance(begin(), end()); }
[[gnu::always_inline]]
bool empty() { return m_length == 0_byte; }
ByteCount byte_count_to(CharCount count) const;