diff options
Added operator- member implementation and improved test cases
* operator- takes a reference to a const std::string::const_iterator and as such enables determining the actual position of a codepoint within a string
* ranged for loops in test cases now take the iterator value by rvalue reference instead of by value
Diffstat (limited to 'src')
-rw-r--r-- | src/codepoint_iterator.cc | 5 | ||||
-rw-r--r-- | src/codepoint_iterator.h | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/codepoint_iterator.cc b/src/codepoint_iterator.cc index b2f6d81..59cb23b 100644 --- a/src/codepoint_iterator.cc +++ b/src/codepoint_iterator.cc @@ -34,6 +34,11 @@ bool CodepointIterator::operator!=( return this->iterator_ != src; } +std::ptrdiff_t CodepointIterator::operator-( + const std::string::const_iterator& src) const { + return this->iterator_ - src; +} + char32_t CodepointIterator::operator*() { std::uint8_t currByte = *(this->iterator_); char32_t codePoint = 0; diff --git a/src/codepoint_iterator.h b/src/codepoint_iterator.h index b505587..d1806e5 100644 --- a/src/codepoint_iterator.h +++ b/src/codepoint_iterator.h @@ -22,6 +22,8 @@ class CodepointIterator : public std::iterator<std::bidirectional_iterator_tag, bool operator!=(const CodepointIterator&) const; bool operator!=(const std::string::const_iterator&) const; + std::ptrdiff_t operator-(const std::string::const_iterator&) const; + char32_t operator*(); CodepointIterator& operator++(); |