30 ? std::unique_ptr<
byte[]>(
40 : input_(
other.input_),
42 offset_(
other.offset_),
43 length_(
other.length_),
44 status_(
other.status_) {
45 other.input_ =
nullptr;
57 input_ =
other.input_;
58 buffer_ = std::move(
other.buffer_);
59 offset_ =
other.offset_;
60 length_ =
other.length_;
61 status_ =
other.status_;
62 other.input_ =
nullptr;
79 if (offset_ < length_) {
80 return buffer_[offset_++];
82 if (status_ !=
kOk)
return byte{0};
88 status_ = input_->
status();
104 if (offset_ < length_) {
106 size_t remaining =
static_cast<size_t>(length_ - offset_);
112 if (status_ !=
kOk) {
122 status_ = input_->
status();
131 status_ = input_->
status();
135 if (
count >
static_cast<size_t>(length_))
136 count =
static_cast<size_t>(length_);
155 if (status_ !=
kOk)
return;
157 status_ = input_->
status();
182 ? input_->
position() + offset_ - length_
204 status_ = input_->
status();
228 status_ = input_->
status();
251 status_ =
input.status();
252 if ((status_ ==
kOk || status_ ==
kEndOfStream) && buffer_ ==
nullptr) {
253 buffer_ = std::unique_ptr<byte[]>(
271 std::unique_ptr<byte[]> buffer_;
roo::basic_string_view< CharT, Traits > basic_string_view
static const size_t kMultipassInputStreamIteratorBufferSize