MCPcopy Create free account
hub / github.com/FastLED/FastLED / SdFatFileHandle

Class SdFatFileHandle

src/platforms/fs_sdcard_arduino.hpp:31–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29
30#ifdef USE_SDFAT
31class SdFatFileHandle : public filebuf {
32private:
33 SdFile _file;
34 string _path;
35
36public:
37 SdFatFileHandle(SdFile file, const char* path) : _file(fl::move(file)), _path(path) {}
38 ~SdFatFileHandle() override {
39 if (_file.isOpen()) {
40 _file.close();
41 }
42 }
43
44 bool is_open() const FL_NOEXCEPT override {
45 return _file.isOpen();
46 }
47 bool available() const FL_NOEXCEPT override {
48 auto f = const_cast<SdFatFileHandle*>(this);
49 return f->_file.available() > 0;
50 }
51 fl::size_t size() const FL_NOEXCEPT override {
52 return _file.fileSize();
53 }
54 fl::size_t read(char *dst, fl::size_t bytesToRead) FL_NOEXCEPT override {
55 return _file.read(reinterpret_cast<u8*>(dst), bytesToRead); // ok reinterpret cast
56 }
57 using filebuf::read;
58 fl::size_t write(const char *data, fl::size_t count) FL_NOEXCEPT override {
59 (void)data; (void)count;
60 return 0;
61 }
62 fl::size_t tell() FL_NOEXCEPT override {
63 return _file.curPosition();
64 }
65 const char* path() const FL_NOEXCEPT override {
66 return _path.c_str();
67 }
68 bool seek(fl::size_t pos, fl::seek_dir dir) FL_NOEXCEPT override {
69 if (dir == fl::seek_dir::beg) return _file.seekSet(pos);
70 if (dir == fl::seek_dir::cur) return _file.seekCur(pos);
71 return _file.seekEnd(pos);
72 }
73 using filebuf::seek;
74 void close() FL_NOEXCEPT override {
75 if (_file.isOpen()) {
76 _file.close();
77 }
78 }
79 bool is_eof() const FL_NOEXCEPT override {
80 auto f = const_cast<SdFatFileHandle*>(this);
81 return f->_file.available() <= 0;
82 }
83 bool has_error() const override { return false; }
84 void clear_error() override {}
85 int error_code() const override { return 0; }
86 const char* error_message() const override { return "No error"; }
87};
88#else

Callers

nothing calls this directly

Calls 5

isOpenMethod · 0.80
availableMethod · 0.45
readMethod · 0.45
c_strMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected