Fenix @develop
 
Loading...
Searching...
No Matches
mfile.hpp
1#ifndef FENIX_DATA_MFILE_HPP
2#define FENIX_DATA_MFILE_HPP
3
4#include "fenix_opt.hpp"
5#include "fenix/data/util/data_ref.hpp"
6
7#include <stdio.h>
8
9namespace fenix::data::util {
10
11class MFile {
12 public:
13 MFile() = default;
14 MFile(MFile&&) = delete;
15
16 void open(const ConstDataRef& r) { open(r, 'r'); }
17 void open(const DataRef& r) { open(r, 'w'); }
18 void open_dynamic();
19
20 void close();
21 char* close_dynamic();
22
23 bool dynamic() { return is_dynamic; }
24 FILE* fp() { return file_ptr; }
25 size_t size();
26
27 ~MFile();
28
29 private:
30 void open(const ConstDataRef& r, const char m);
31 char* close_file();
32
33 FILE* file_ptr = nullptr;
34 bool is_dynamic = false;
35 char* file_mem = nullptr;
36 size_t file_size = 0;
37};
38
39} //namespace fenix::data::util
40
41#endif
Definition data_ref.hpp:86
Definition data_ref.hpp:50
Definition mfile.hpp:11