summaryrefslogtreecommitdiff
path: root/src/uline.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/uline.cc')
-rw-r--r--src/uline.cc23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/uline.cc b/src/uline.cc
index 7d4c7c7..358f36c 100644
--- a/src/uline.cc
+++ b/src/uline.cc
@@ -30,7 +30,7 @@ class UnicodeReader {
end_(buffer_.get() + check::add(max_len, static_cast<size_t>(2))) {}
[[nodiscard]]
- std::expected<std::basic_string_view<T>, line::ReadError> read() {
+ std::expected<std::basic_string_view<T>, io::ReadError> read() {
while (true) {
search_ = std::find_first_of(search_, wptr_, line_terminators_.begin(),
line_terminators_.end());
@@ -46,12 +46,11 @@ class UnicodeReader {
if (search_ + 1 == wptr_) {
make_space_if_needed();
auto got = fill();
- if (got.has_value()) {
- if (got.value() == 0) {
+ if (!got.has_value()) {
+ if (got.error() == io::ReadError::Eof) {
return line(search_ - rptr_, 1);
}
- } else {
- return std::unexpected(line::ReadError(got.error()));
+ return std::unexpected(got.error());
}
}
if (search_[1] == line_terminators_[1]) {
@@ -68,15 +67,11 @@ class UnicodeReader {
make_space_if_needed();
auto got = fill();
- if (got.has_value()) {
- if (got.value() == 0) {
- if (rptr_ == wptr_) {
- return std::unexpected(line::ReadError());
- }
+ if (!got.has_value()) {
+ if (got.error() == io::ReadError::Eof && rptr_ != wptr_) {
return line(wptr_ - rptr_, 0);
}
- } else {
- return std::unexpected(line::ReadError(got.error()));
+ return std::unexpected(got.error());
}
}
}
@@ -138,7 +133,7 @@ class ReaderImpl : public UnicodeReader<char, u8::Reader>,
{'\r', '\n'}) {}
[[nodiscard]]
- std::expected<std::string_view, ::line::ReadError> read() override {
+ std::expected<std::string_view, io::ReadError> read() override {
return UnicodeReader<char, u8::Reader>::read();
}
@@ -170,7 +165,7 @@ class ReaderImpl : public UnicodeReader<char16_t, u16::Reader>,
{u'\r', u'\n'}) {}
[[nodiscard]]
- std::expected<std::u16string_view, ::line::ReadError> read() override {
+ std::expected<std::u16string_view, io::ReadError> read() override {
return UnicodeReader<char16_t, u16::Reader>::read();
}