omw  0.2.1-beta
file.h
1 /*
2 author Oliver Blaser
3 date 01.03.2022
4 copyright MIT - Copyright (c) 2022 Oliver Blaser
5 */
6 
7 #ifndef IG_OMW_IO_FILE_H
8 #define IG_OMW_IO_FILE_H
9 
10 #include <cstddef>
11 #include <cstdint>
12 #include <fstream>
13 #include <string>
14 #include <vector>
15 
16 #include "../../omw/defs.h"
17 #include "../../omw/string.h"
18 #include "../../omw/vector.h"
19 
20 namespace omw
21 {
22  namespace io
23  {
28  enum LINE_END
29  {
30  LE_LF = 0,
31  LE_CR,
32  LE_CRLF,
33 
34 #if defined(OMW_PLAT_WIN)
35  LE_AUTO = LE_CRLF
36 #elif defined(OMW_PLAT_APPLE)
37  LE_AUTO = LE_CR
38 #else
39  LE_AUTO = LE_LF
40 #endif
41  };
42 
44  {
45  public:
46  using fstream = std::fstream;
47  using iostate = fstream::iostate;
48  using openmode = fstream::openmode;
50  static constexpr iostate good = fstream::goodbit;
51  static constexpr iostate badbit = fstream::badbit;
52  static constexpr iostate failbit = fstream::failbit;
53  static constexpr iostate eofbit = fstream::eofbit;
54 
55  static constexpr openmode rd = fstream::in;
56  static constexpr openmode wr = fstream::out;
59  public:
61  FileInterface_Base(const std::string& filename);
62  virtual ~FileInterface_Base();
63 
64  const omw::string& filename() const { return m_filename; }
65 
66  void setFileName(const std::string& filename) { m_filename = filename; }
67 
68  void open(openmode mode) const;
71  void close() const;
72 
73  size_t size() const;
74 
75  void read(char* buffer, size_t count) const;
76  void write(const char* data);
77  void write(const char* data, size_t count);
78 
79  iostate getState() const;
80 
81  private:
82  omw::string m_filename;
83  mutable fstream m_fs;
84  };
85 
87  {
88  public:
90  BinFileInterface(const std::string& filename);
91  virtual ~BinFileInterface();
92 
93  void read(uint8_t* buffer, size_t count) const;
94  void write(const uint8_t* data, size_t count);
95  };
96 
103 
104 
105 
106  std::streamsize size_to_streamsize(size_t val);
107  size_t streampos_to_size(const std::streampos& val);
108  inline std::streamoff streampos_to_streamoff(const std::streampos& val) { return static_cast<std::streamoff>(val); }
109 
110 
111 
112  //int readBytes(const std::string& filename, std::vector<uint8_t>& buffer);
113  //int writeBytes(const std::string& filename, const std::vector<uint8_t>& data);
114 
115  //int readString(const std::string& filename, std::string& buffer);
116  //int writeString(const std::string& filename, const std::string& str);
117 
119  }
120 }
121 
122 #endif // IG_OMW_IO_FILE_H
omw::io::FileInterface_Base::rd
static constexpr openmode rd
Definition: file.h:55
omw::io::FileInterface_Base::iostate
fstream::iostate iostate
Definition: file.h:47
omw::io::streampos_to_streamoff
std::streamoff streampos_to_streamoff(const std::streampos &val)
Definition: file.h:108
std::string
C++ standard string. See std::basic_string.
Definition: linkToStd.dox:19
omw::io::FileInterface_Base::openmode
fstream::openmode openmode
Definition: file.h:48
omw::io::FileInterface_Base::open
void open(openmode mode) const
Definition: file.cpp:57
omw::io::FileInterface_Base::openRead
void openRead() const
Definition: file.h:69
omw::io::FileInterface_Base
Definition: file.h:44
omw::io::FileInterface_Base::wr
static constexpr openmode wr
Definition: file.h:56
omw::io::BinFileInterface::write
void write(const uint8_t *data, size_t count)
Definition: file.cpp:260
omw::io::BinFileInterface
Definition: file.h:87
omw::io::FileInterface_Base::size
size_t size() const
Definition: file.cpp:99
omw::io::FileInterface_Base::openWrite
void openWrite()
Definition: file.h:70
omw::io::streampos_to_size
size_t streampos_to_size(const std::streampos &val)
Definition: file.cpp:309
omw::io::FileInterface_Base::close
void close() const
Definition: file.cpp:85
omw::io::FileInterface_Base::write
void write(const char *data)
Definition: file.cpp:180
omw::io::FileInterface_Base::read
void read(char *buffer, size_t count) const
Definition: file.cpp:161
omw::string
Definition: string.h:140
omw::io::FileInterface_Base::getState
iostate getState() const
Definition: file.cpp:223
omw::io::size_to_streamsize
std::streamsize size_to_streamsize(size_t val)
Definition: file.cpp:271
omw
Main namespace.
omw::io::BinFileInterface::read
void read(uint8_t *buffer, size_t count) const
Definition: file.cpp:252