18 virtual bool good()
const = 0;
22 std::ios_base::seekdir way = std::ios_base::beg) = 0;
23 virtual void read(
char* data,
size_t n) = 0;
24 virtual std::string
label()
const = 0;
31 virtual bool good()
const = 0;
35 std::ios_base::seekdir way = std::ios_base::beg) = 0;
36 virtual void write(
const char* data,
size_t n) = 0;
37 virtual std::string
label()
const = 0;
44 : fd_(open(file_path.c_str(), O_RDONLY)), label_(
std::move(file_path)) {}
54 bool good()
const override {
59 return lseek(fd_, 0, SEEK_CUR);
62 void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
64 if (way == std::ios_base::beg) {
67 lseek(fd_, off, SEEK_CUR);
71 void read(
char* data,
size_t n)
override {
73 auto m =
::read(fd_, data, std::min(n,
static_cast<size_t>(INT32_MAX)));
75 std::ostringstream msg;
76 msg <<
"[read] Unable to read " << n <<
" bytes from file.";
77 throw std::runtime_error(msg.str());
84 std::string
label()
const override {
85 return "file " + label_;
96 : fd_(open(file_path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0644)),
97 label_(
std::move(file_path)) {}
112 return lseek(fd_, 0, SEEK_CUR);
115 void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
117 if (way == std::ios_base::beg) {
120 lseek(fd_, off, SEEK_CUR);
124 void write(
const char* data,
size_t n)
override {
126 auto m =
::write(fd_, data, std::min(n,
static_cast<size_t>(INT32_MAX)));
128 std::ostringstream msg;
129 msg <<
"[write] Unable to write " << n <<
" bytes to file.";
130 throw std::runtime_error(msg.str());
137 std::string
label()
const override {
138 return "file " + label_;
bool good() const override
Definition load.h:54
~FileReader() override
Definition load.h:46
void read(char *data, size_t n) override
Definition load.h:71
std::string label() const override
Definition load.h:84
FileReader(std::string file_path)
Definition load.h:43
bool is_open() const override
Definition load.h:50
size_t tell() override
Definition load.h:58
void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
Definition load.h:62
FileWriter(std::string file_path)
Definition load.h:95
std::string label() const override
Definition load.h:137
void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
Definition load.h:115
bool good() const override
Definition load.h:107
size_t tell() override
Definition load.h:111
void write(const char *data, size_t n) override
Definition load.h:124
~FileWriter() override
Definition load.h:99
bool is_open() const override
Definition load.h:103
virtual bool good() const =0
virtual bool is_open() const =0
virtual ~Reader()=default
virtual std::string label() const =0
virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
virtual void read(char *data, size_t n)=0
virtual bool good() const =0
virtual ~Writer()=default
virtual std::string label() const =0
virtual bool is_open() const =0
virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
virtual void write(const char *data, size_t n)=0
array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
Computes the standard deviation of the elements of an array.