utf8::is_character_start takes directly the char value

This commit is contained in:
Maxime Coste 2014-05-14 19:21:19 +01:00
parent fbf7856e3e
commit db423e4a88
2 changed files with 5 additions and 6 deletions

View File

@ -162,8 +162,8 @@ void SelectionList::check_invariant() const
kak_assert(buffer.is_valid(sel.cursor())); kak_assert(buffer.is_valid(sel.cursor()));
kak_assert(not buffer.is_end(sel.anchor())); kak_assert(not buffer.is_end(sel.anchor()));
kak_assert(not buffer.is_end(sel.cursor())); kak_assert(not buffer.is_end(sel.cursor()));
kak_assert(utf8::is_character_start(buffer.iterator_at(sel.anchor()))); kak_assert(utf8::is_character_start(buffer.byte_at(sel.anchor())));
kak_assert(utf8::is_character_start(buffer.iterator_at(sel.cursor()))); kak_assert(utf8::is_character_start(buffer.byte_at(sel.cursor())));
} }
#endif #endif
} }

View File

@ -76,17 +76,16 @@ CharCount distance(Iterator begin, Iterator end)
// return true if it points to the first byte of a (either single or // return true if it points to the first byte of a (either single or
// multibyte) character // multibyte) character
template<typename Iterator> inline bool is_character_start(char c)
bool is_character_start(Iterator it)
{ {
return (*it & 0xC0) != 0x80; return (c & 0xC0) != 0x80;
} }
// returns an iterator to the first byte of the character it is into // returns an iterator to the first byte of the character it is into
template<typename Iterator> template<typename Iterator>
Iterator character_start(Iterator it) Iterator character_start(Iterator it)
{ {
while (not is_character_start(it)) while (not is_character_start(*it))
--it; --it;
return it; return it;
} }