roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
file_resource.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef ARDUINO
4
5#include <FS.h>
6
7#include <memory>
8
9#include "roo_io.h"
13
14namespace roo_io {
15
16class ArduinoFileResource : public MultipassResource {
17 public:
18 ArduinoFileResource(fs::FS& fs, String path)
19 : fs_(fs), path_(std::move(path)) {}
20
21 std::unique_ptr<MultipassInputStream> open() const override {
22 return std::unique_ptr<MultipassInputStream>(
23 new ArduinoFileInputStream(fs_.open(path_)));
24 }
25
26 private:
27 FS& fs_;
28 String path_;
29};
30
31// Can act both as an Arduino file resource, or as a roo_io::Filesystem-based
32// file resource.
34 public:
36 : fs_(nullptr), arduino_fs_(&fs), path_(path.c_str()) {}
37
39 : fs_(&fs), arduino_fs_(nullptr), path_(std::move(path)) {}
40
41 std::unique_ptr<roo_io::MultipassInputStream> open() const override {
42 return fs_ != nullptr ? fs_->mount().fopen(path_.c_str())
43 : std::unique_ptr<roo_io::MultipassInputStream>(
45 arduino_fs_->open(path_.c_str())));
46 }
47
48 private:
50 ::fs::FS* arduino_fs_;
51 std::string path_;
52};
53
54} // namespace roo_io
55
56#endif // ARDUINO
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8