roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
file_iterable.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <string>
5
8#include "roo_logging.h"
9
10namespace roo_io {
11
13 public:
15 public:
16 FileIterator(Filesystem& fs, const char* path)
17 : input_(fs.mount().fopen(path)), itr_(*input_) {
18 if (!itr_.ok()) {
19 LOG(ERROR) << "Failed to open file " << path << ": "
20 << StatusAsString(itr_.status());
21 }
22 }
23
24 byte read() { return itr_.read(); }
25
26 size_t read(byte* buf, size_t count) { return itr_.read(buf, count); }
27
28 void skip(size_t count) { itr_.skip(count); }
29
30 Status status() const { return itr_.status(); }
31
32 uint64_t size() { return itr_.size(); }
33
34 uint64_t position() { return itr_.position(); }
35
36 void rewind() { itr_.rewind(); }
37
39
40 private:
41 std::unique_ptr<MultipassInputStream> input_;
43 };
44
45 FileIterable(Filesystem& fs, const char* path)
46 : fs_(fs), path_(strdup(path)) {}
47
48 FileIterator iterator() const { return FileIterator(fs_, path_.get()); }
49
50 private:
51 Filesystem& fs_;
52 std::shared_ptr<char[]> path_;
53};
54
55} // namespace roo_io
void seek(uint64_t position)
Seeks to absolute position.
uint64_t size() const
Returns stream size when iterator status is kOk or kEndOfStream.
uint64_t position() const
Returns current read position when status is kOk or kEndOfStream.
void seek(uint64_t position)
size_t read(byte *buf, size_t count)
FileIterator(Filesystem &fs, const char *path)
FileIterator iterator() const
FileIterable(Filesystem &fs, const char *path)
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
size_t count
Definition compare.h:45
Status
Definition status.h:7
const char * StatusAsString(Status status)
Definition status.cpp:5