MCPcopy Create free account
hub / github.com/apache/arrow / operator()

Method operator()

cpp/src/arrow/csv/reader.cc:109–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107 }
108
109 Result<TransformFlow<std::shared_ptr<Buffer>>> operator()(std::shared_ptr<Buffer> buf) {
110 if (buf == nullptr) {
111 // EOF
112 return TransformFinish();
113 }
114
115 int64_t offset = 0;
116 if (first_buffer_) {
117 ARROW_ASSIGN_OR_RAISE(auto data, util::SkipUTF8BOM(buf->data(), buf->size()));
118 offset += data - buf->data();
119 DCHECK_GE(offset, 0);
120 first_buffer_ = false;
121 }
122
123 if (trailing_cr_ && buf->data()[offset] == '\n') {
124 // Skip '\r\n' line separator that started at the end of previous buffer
125 ++offset;
126 }
127
128 trailing_cr_ = (buf->data()[buf->size() - 1] == '\r');
129 buf = SliceBuffer(std::move(buf), offset);
130 if (buf->size() == 0) {
131 // EOF
132 return TransformFinish();
133 } else {
134 return TransformYield(std::move(buf));
135 }
136 }
137
138 protected:
139 bool first_buffer_ = true;

Callers 1

DecodeMethod · 0.45

Calls 5

TransformFinishClass · 0.85
SliceBufferFunction · 0.85
TransformYieldFunction · 0.85
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected