26 void write(
byte v) {
rep_->write(
v); }
28 size_t write(
const byte*
buf,
size_t count) {
37 Status status()
const {
return rep_->status(); }
48 size_t write(
const byte* buf,
size_t count);
51 Status status()
const {
return status_; }
54 Rep(
const Rep&) =
delete;
56 Rep& operator=(
const Rep&);
60 byte buffer_[kArduinoFileOutputIteratorBufferSize];
67 std::unique_ptr<Rep>
rep_;
70inline ArduinoFileOutputIterator::Rep::Rep()
75inline ArduinoFileOutputIterator::Rep::Rep(::fs::File file)
76 : file_(
std::move(file)), offset_(0), status_(file_ ?
kOk :
kClosed) {
77 if (status_ != kOk) offset_ = kArduinoFileOutputIteratorBufferSize;
80inline void ArduinoFileOutputIterator::Rep::writeBuffer() {
81 if (file_.write((
const uint8_t*)buffer_, offset_) < offset_) {
87inline void ArduinoFileOutputIterator::Rep::write(
byte v) {
88 if (offset_ >= kArduinoFileOutputIteratorBufferSize) {
89 if (status_ != kOk)
return;
92 buffer_[offset_++] = v;
95inline size_t ArduinoFileOutputIterator::Rep::write(
const byte* buf,
97 if (offset_ > 0 || len < kArduinoFileOutputIteratorBufferSize) {
98 size_t cap = kArduinoFileOutputIteratorBufferSize - offset_;
99 if (len > cap) len = cap;
100 memcpy(&buffer_[offset_], buf, len);
102 if (offset_ >= kArduinoFileOutputIteratorBufferSize) {
103 if (status_ != kOk)
return 0;
108 if (status_ != kOk)
return 0;
109 size_t result = file_.write((
const uint8_t*)buf, len);
116inline void ArduinoFileOutputIterator::Rep::flush() {
117 if (status_ == kOk) {
118 if (offset_ > 0) writeBuffer();
roo::basic_string_view< CharT, Traits > basic_string_view