@@ -52,7 +52,7 @@ FileOperationHandle FileHandle::readLine(size_t lineNumber) const {
5252 return FileOperationHandle::immediate (FileOpStatus::Failed);
5353}
5454
55- FileOperationHandle FileHandle::readLineBinary (size_t lineNumber, std::byte delimiter) const {
55+ FileOperationHandle FileHandle::readLineBinary (size_t lineNumber, char delimiter) const {
5656 if (!_backend) {
5757 return FileOperationHandle::immediate (FileOpStatus::Failed);
5858 }
@@ -72,25 +72,28 @@ FileOperationHandle FileHandle::readLineBinary(size_t lineNumber, std::byte deli
7272 }
7373 auto buf = rh.contentsBytes ();
7474 size_t idx = 0 ;
75- std::vector<std::byte> line;
75+ std::vector<char > line;
76+ auto charDelim = static_cast <std::byte>(static_cast <unsigned char >(delimiter));
7677 for (size_t i = 0 ; i < buf.size (); ++i) {
77- if (buf[i] == delimiter ) {
78+ if (buf[i] == charDelim ) {
7879 if (idx == lineNumber) break ; else { line.clear (); ++idx; continue ; }
7980 }
80- line.push_back (buf[i]);
81+ line.push_back (static_cast < char >( buf[i]) );
8182 }
8283 if (idx != lineNumber) { s.complete (FileOpStatus::Partial); return ; }
83- s.bytes = std::move (line);
84+ s.bytes .assign (reinterpret_cast <const std::byte*>(line.data ()),
85+ reinterpret_cast <const std::byte*>(line.data () + line.size ()));
8486 s.complete (FileOpStatus::Complete);
8587 });
8688}
8789
88- FileOperationHandle FileHandle::writeAll (std::span<const std::byte > bytes) const {
90+ FileOperationHandle FileHandle::writeAll (std::span<const char > bytes) const {
8991 if (_backend && _vfs) {
9092 WriteOptions opts; opts.truncate = true ;
91- auto data = std::vector<std::byte >(bytes.begin (), bytes.end ());
93+ auto data = std::vector<char >(bytes.begin (), bytes.end ());
9294 return _vfs->submitSerialized (_meta.path , [opts, data=std::move (data)](FileOperationHandle::OpState& s, std::shared_ptr<IFileSystemBackend> backend, const std::string& p, const ExecContext&) mutable {
93- auto inner = backend->writeFile (p, std::span<const std::byte>(data.data (), data.size ()), opts);
95+ auto byteSpan = std::as_bytes (std::span<const char >(data.data (), data.size ()));
96+ auto inner = backend->writeFile (p, byteSpan, opts);
9497 inner.wait ();
9598 auto st = inner.status ();
9699 if (st == FileOpStatus::Complete || st == FileOpStatus::Partial) {
@@ -107,14 +110,15 @@ FileOperationHandle FileHandle::writeAll(std::span<const std::byte> bytes) const
107110 return FileOperationHandle::immediate (FileOpStatus::Failed);
108111}
109112
110- FileOperationHandle FileHandle::writeAll (std::span<const std::byte > bytes, const WriteOptions& opts) const {
113+ FileOperationHandle FileHandle::writeAll (std::span<const char > bytes, const WriteOptions& opts) const {
111114 if (_backend && _vfs) {
112- auto data = std::vector<std::byte >(bytes.begin (), bytes.end ());
115+ auto data = std::vector<char >(bytes.begin (), bytes.end ());
113116 return _vfs->submitSerialized (_meta.path , [opts, data=std::move (data)](FileOperationHandle::OpState& s, std::shared_ptr<IFileSystemBackend> backend, const std::string& p, const ExecContext&) mutable {
117+ auto byteSpan = std::as_bytes (std::span<const char >(data.data (), data.size ()));
114118 if (auto * local = dynamic_cast <LocalFileSystemBackend*>(backend.get ())) {
115- local->doWriteFile (s, p, std::span< const std::byte>(data. data (), data. size ()) , opts);
119+ local->doWriteFile (s, p, byteSpan , opts);
116120 } else {
117- auto inner = backend->writeFile (p, std::span< const std::byte>(data. data (), data. size ()) , opts);
121+ auto inner = backend->writeFile (p, byteSpan , opts);
118122 inner.wait ();
119123 auto st = inner.status ();
120124 if (st == FileOpStatus::Complete || st == FileOpStatus::Partial) {
@@ -132,15 +136,16 @@ FileOperationHandle FileHandle::writeAll(std::span<const std::byte> bytes, const
132136 return FileOperationHandle::immediate (FileOpStatus::Failed);
133137}
134138
135- FileOperationHandle FileHandle::writeRange (uint64_t offset, std::span<const std::byte > bytes) const {
139+ FileOperationHandle FileHandle::writeRange (uint64_t offset, std::span<const char > bytes) const {
136140 WriteOptions opts; opts.offset = offset; opts.truncate = false ;
137141 if (_backend && _vfs) {
138- auto data = std::vector<std::byte >(bytes.begin (), bytes.end ());
142+ auto data = std::vector<char >(bytes.begin (), bytes.end ());
139143 return _vfs->submitSerialized (_meta.path , [opts, data=std::move (data)](FileOperationHandle::OpState& s, std::shared_ptr<IFileSystemBackend> backend, const std::string& p, const ExecContext&) mutable {
144+ auto byteSpan = std::as_bytes (std::span<const char >(data.data (), data.size ()));
140145 if (auto * local = dynamic_cast <LocalFileSystemBackend*>(backend.get ())) {
141- local->doWriteFile (s, p, std::span< const std::byte>(data. data (), data. size ()) , opts);
146+ local->doWriteFile (s, p, byteSpan , opts);
142147 } else {
143- auto inner = backend->writeFile (p, std::span< const std::byte>(data. data (), data. size ()) , opts);
148+ auto inner = backend->writeFile (p, byteSpan , opts);
144149 inner.wait ();
145150 auto st = inner.status ();
146151 if (st == FileOpStatus::Complete || st == FileOpStatus::Partial) {
@@ -158,17 +163,18 @@ FileOperationHandle FileHandle::writeRange(uint64_t offset, std::span<const std:
158163 return FileOperationHandle::immediate (FileOpStatus::Failed);
159164}
160165
161- FileOperationHandle FileHandle::writeRange (uint64_t offset, std::span<const std::byte > bytes, const WriteOptions& opts) const {
166+ FileOperationHandle FileHandle::writeRange (uint64_t offset, std::span<const char > bytes, const WriteOptions& opts) const {
162167 if (_backend && _vfs) {
163168 WriteOptions wopts = opts;
164169 wopts.offset = offset;
165170 wopts.truncate = false ;
166- auto data = std::vector<std::byte >(bytes.begin (), bytes.end ());
171+ auto data = std::vector<char >(bytes.begin (), bytes.end ());
167172 return _vfs->submitSerialized (_meta.path , [wopts, data=std::move (data)](FileOperationHandle::OpState& s, std::shared_ptr<IFileSystemBackend> backend, const std::string& p, const ExecContext&) mutable {
173+ auto byteSpan = std::as_bytes (std::span<const char >(data.data (), data.size ()));
168174 if (auto * local = dynamic_cast <LocalFileSystemBackend*>(backend.get ())) {
169- local->doWriteFile (s, p, std::span< const std::byte>(data. data (), data. size ()) , wopts);
175+ local->doWriteFile (s, p, byteSpan , wopts);
170176 } else {
171- auto inner = backend->writeFile (p, std::span< const std::byte>(data. data (), data. size ()) , wopts);
177+ auto inner = backend->writeFile (p, byteSpan , wopts);
172178 inner.wait ();
173179 auto st = inner.status ();
174180 if (st == FileOpStatus::Complete || st == FileOpStatus::Partial) {
0 commit comments