16 virtual std::string GetError()
const = 0;
17 virtual void ClearError() = 0;
18 virtual bool AtEOF()
const = 0;
23 virtual int Seek(
int iOffset) = 0;
24 virtual int Seek(
int offset,
int whence) = 0;
25 virtual int Tell()
const = 0;
31 virtual int Read(
void* pBuffer,
size_t iBytes) = 0;
32 virtual int Read(std::string& buffer,
int bytes = -1) = 0;
33 virtual int Read(
void* buffer,
size_t bytes,
int nmemb) = 0;
37 virtual int Write(
const void* pBuffer,
size_t iBytes) = 0;
38 virtual int Write(
const std::string& sString) = 0;
39 virtual int Write(
const void* buffer,
size_t bytes,
int nmemb) = 0;
46 virtual int Flush() = 0;
49 virtual std::string GetDisplayPath()
const {
return std::string(); }
53 virtual int GetLine(std::string& out) = 0;
54 virtual int PutLine(
const std::string& str) = 0;
56 virtual void EnableCRC32(
bool on =
true) = 0;
57 virtual bool GetCRC32(uint32_t* iRet) = 0;
59 virtual int GetFileSize()
const = 0;
64 virtual int GetFD() = 0;
74 std::string GetError()
const override {
return m_sError; }
75 void ClearError()
override { SetError(
""); }
77 bool AtEOF()
const override {
return m_bEOF; }
79 int Seek(
int iOffset)
override;
80 int Seek(
int offset,
int whence)
override;
81 int Tell()
const override {
return m_iFilePos; }
83 int Read(
void* pBuffer,
size_t iBytes)
override;
84 int Read(std::string& buffer,
int bytes = -1)
override;
85 int Read(
void* buffer,
size_t bytes,
int nmemb)
override;
87 int Write(
const void* pBuffer,
size_t iBytes)
override;
88 int Write(
const std::string& sString)
override
90 return Write(sString.data(), sString.size());
92 int Write(
const void* buffer,
size_t bytes,
int nmemb)
override;
96 int GetLine(std::string& out)
override;
97 int PutLine(
const std::string& str)
override;
99 void EnableCRC32(
bool on =
true)
override;
100 bool GetCRC32(uint32_t* iRet)
override;
102 int GetFileSize()
const override = 0;
103 int GetFD()
override {
return -1; }
104 std::string GetDisplayPath()
const override {
return std::string(); }
108 virtual int SeekInternal(
int ) {
return 0; }
109 virtual int ReadInternal(
void* pBuffer,
size_t iBytes) = 0;
110 virtual int WriteInternal(
const void* pBuffer,
size_t iBytes) = 0;
111 virtual int FlushInternal() {
return 0; }
113 void EnableReadBuffering();
114 void EnableWriteBuffering(
int iBytes = 1024 * 64);
116 void SetError(
const std::string& sError) { m_sError = sError; }
117 std::string m_sError;
157 char* m_pWriteBuffer;
158 int m_iWriteBufferPos;
159 int m_iWriteBufferSize;
160 int m_iWriteBufferUsed;
165 bool m_bCRC32Enabled;