pocolog_cpp
FileStream.hpp
Go to the documentation of this file.
1 #ifndef FILESTREAM_H
2 #define FILESTREAM_H
3 
4 #include <fstream>
5 #include <vector>
6 
7 namespace pocolog_cpp
8 {
9 
23 {
24 private:
25  std::vector<char> readBuffer;
26  int fd;
27  off_t readBufferPosition;
28  off_t readBufferEndPosition;
29  off_t readPos;
30  off_t writePos;
31  off_t fileSize;
32  off_t blockSize;
33 
34  bool posInBuffer(off_t pos) const
35  {
36  return pos >= readBufferPosition && pos < readBufferEndPosition;
37  }
38 
39  bool reloadBuffer(off_t position);
40  bool goodFlag;
41 
42 public:
43  FileStream();
44 
45  FileStream(const char* __s,
46  std::ios_base::openmode mode);
47  ~FileStream();
48 
49  bool open(const char* fileName, std::ios_base::openmode mode);
50 
51  void read(char* buffer, size_t size);
52 
53  std::streampos tellg();
54  std::streampos tellp();
55 
56  std::streampos seekg(std::streampos pos);
57  std::streampos seekp(std::streampos pos);
58 
59  bool good() const;
60  bool eof() const
61  {
62  return readPos >= fileSize;
63  }
64 
65  bool fail() const;
66  off_t size() const;
67  void close();
68 
69 };
70 }
71 #endif // FILESTREAM_H
off_t size() const
Definition: FileStream.cpp:178
std::streampos seekg(std::streampos pos)
Definition: FileStream.cpp:154
bool fail() const
Definition: FileStream.cpp:149
void close()
Definition: FileStream.cpp:183
std::streampos seekp(std::streampos pos)
Definition: FileStream.cpp:161
bool good() const
Definition: FileStream.cpp:144
bool eof() const
Definition: FileStream.hpp:60
std::streampos tellg()
Definition: FileStream.cpp:168
std::streampos tellp()
Definition: FileStream.cpp:173
void read(char *buffer, size_t size)
Definition: FileStream.cpp:113
FileStream()
Definition: FileStream.cpp:10
bool open(const char *fileName, std::ios_base::openmode mode)
Definition: FileStream.cpp:30
Definition: FileStream.hpp:7
Definition: FileStream.hpp:22
~FileStream()
Definition: FileStream.cpp:23