14 virtual std::string GetError()
const = 0;
15 virtual void ClearError() = 0;
16 virtual bool AtEOF()
const = 0;
21 virtual int Seek(
int iOffset) = 0;
22 virtual int Seek(
int offset,
int whence) = 0;
23 virtual int Tell()
const = 0;
29 virtual int Read(
void* pBuffer,
size_t iBytes) = 0;
30 virtual int Read(std::string& buffer,
int bytes = -1) = 0;
31 virtual int Read(
void* buffer,
size_t bytes,
int nmemb) = 0;
35 virtual int Write(
const void* pBuffer,
size_t iBytes) = 0;
36 virtual int Write(
const std::string& sString) = 0;
37 virtual int Write(
const void* buffer,
size_t bytes,
int nmemb) = 0;
44 virtual int Flush() = 0;
47 virtual std::string GetDisplayPath()
const {
return std::string(); }
51 virtual int GetLine(std::string& out) = 0;
52 virtual int PutLine(
const std::string& str) = 0;
54 virtual void EnableCRC32(
bool on =
true) = 0;
55 virtual bool GetCRC32(uint32_t* iRet) = 0;
57 virtual int GetFileSize()
const = 0;
62 virtual int GetFD() = 0;
72 std::string GetError()
const override {
return m_sError; }
73 void ClearError()
override { SetError(
""); }
75 bool AtEOF()
const override {
return m_bEOF; }
77 int Seek(
int iOffset)
override;
78 int Seek(
int offset,
int whence)
override;
79 int Tell()
const override {
return m_iFilePos; }
81 int Read(
void* pBuffer,
size_t iBytes)
override;
82 int Read(std::string& buffer,
int bytes = -1)
override;
83 int Read(
void* buffer,
size_t bytes,
int nmemb)
override;
85 int Write(
const void* pBuffer,
size_t iBytes)
override;
86 int Write(
const std::string& sString)
override
88 return Write(sString.data(), sString.size());
90 int Write(
const void* buffer,
size_t bytes,
int nmemb)
override;
94 int GetLine(std::string& out)
override;
95 int PutLine(
const std::string& str)
override;
97 void EnableCRC32(
bool on =
true)
override;
98 bool GetCRC32(uint32_t* iRet)
override;
100 int GetFileSize()
const override = 0;
101 int GetFD()
override {
return -1; }
102 std::string GetDisplayPath()
const override {
return std::string(); }
106 virtual int SeekInternal(
int ) {
return 0; }
107 virtual int ReadInternal(
void* pBuffer,
size_t iBytes) = 0;
108 virtual int WriteInternal(
const void* pBuffer,
size_t iBytes) = 0;
109 virtual int FlushInternal() {
return 0; }
111 void EnableReadBuffering();
112 void EnableWriteBuffering(
int iBytes = 1024 * 64);
114 void SetError(
const std::string& sError) { m_sError = sError; }
115 std::string m_sError;
155 char* m_pWriteBuffer;
156 int m_iWriteBufferPos;
157 int m_iWriteBufferSize;
158 int m_iWriteBufferUsed;
163 bool m_bCRC32Enabled;