Google OR-Tools: ortools/util/filelineiter.h Source File
53 const std::string& operator*() const { return line_; }
60 bool HasOption(int option) const { return options_ & option; }
64 if (file_ == nullptr) return;
67 int i = next_position_after_eol_;
68 for (; i < buffer_size_; ++i) {
69 if (buffer_[i] == '\n') break;
72 line_.append(&buffer_[next_position_after_eol_],
73 i - next_position_after_eol_);
74 buffer_size_ = file_->Read(&buffer_, kBufferSize);
76 LOG(WARNING) << "Error while reading file.";
80 next_position_after_eol_ = 0;
88 line_.append(&buffer_[next_position_after_eol_],
89 i - next_position_after_eol_ + 1);
90 next_position_after_eol_ = i + 1;
96 (line_.empty() || line_ == "\n"));
101 line_.erase(std::remove(line_.begin(), line_.end(), '\r'), line_.end());
103 const auto eol = std::find(line_.begin(), line_.end(), '\n');
104 if (!HasOption(KEEP_LINEFEED) && eol != line_.end()) {
109 static constexpr int kBufferSize = 5 * 1024;
110 char buffer_[kBufferSize];
145 explicit FileLines(absl::string_view filename,
162 if (file_ != nullptr) file_->Close(file::Defaults()).IgnoreError();