43 if ((err = FileWrite(
m_hFile, count, buffPtr)) != NoError) ReturnWithError(err);
53 if ((err = FileRead(
m_hFile, count, buffPtr)) != NoError) ReturnWithError(err);
60 if ((err = SetFPos(
m_hFile, posMode, posOff)) != NoError) ReturnWithError(err);
68 if ((err = GetFPos(
m_hFile, &pos)) != NoError) ReturnWithError2(err, pos);
82 if (!
m_buffer) ReturnWithError(InsufficientMemory);
92 , m_eos(pBuffer + size)
94 , m_allocated(false) {
115 const size_t deltaSize = 0x4000 + *count;
118 memcpy(
m_pos, buffPtr, *count);
128 ReturnWithError(InsufficientMemory);
138 memcpy(
m_pos, buffPtr, *count);
142 ReturnWithError(InsufficientMemory);
156 memcpy(buffPtr,
m_pos, *count);
161 memcpy(buffPtr,
m_pos, *count);
184 ReturnWithError(InvalidStreamPos);
191 void CPGFMemFileStream::Write(
int *count,
void *buffPtr) {
196 m_memFile->Write(buffPtr, *count);
200 void CPGFMemFileStream::Read(
int *count,
void *buffPtr) {
204 m_memFile->Read(buffPtr, *count);
208 void CPGFMemFileStream::SetPos(
short posMode, INT64 posOff) {
210 m_memFile->Seek(posOff, posMode);
214 UINT64 CPGFMemFileStream::GetPos()
const {
215 return (UINT64)m_memFile->GetPosition();
221 #if defined(WIN32) || defined(WINCE) 222 void CPGFIStream::Write(
int *count,
void *buffPtr) {
228 HRESULT hr = m_stream->Write(buffPtr, *count, (ULONG *)count);
235 void CPGFIStream::Read(
int *count,
void *buffPtr) {
240 HRESULT hr = m_stream->Read(buffPtr, *count, (ULONG *)count);
247 void CPGFIStream::SetPos(
short posMode, INT64 posOff) {
251 li.QuadPart = posOff;
253 HRESULT hr = m_stream->Seek(li, posMode,
nullptr);
260 UINT64 CPGFIStream::GetPos()
const {
267 HRESULT hr = m_stream->Seek(n, FSFromCurrent, &pos);
271 ReturnWithError2(hr, pos.QuadPart);
274 #endif // WIN32 || WINCE virtual bool IsValid() const
UINT8 * m_pos
buffer start address and current buffer address
virtual void Write(int *count, void *buffer)
void Reinitialize(UINT8 *pBuffer, size_t size)
virtual void SetPos(short posMode, INT64 posOff)
virtual bool IsValid() const
bool m_allocated
indicates a new allocated buffer
virtual void Read(int *count, void *buffer)
virtual void Read(int *count, void *buffer)
virtual UINT64 GetPos() const
CPGFMemoryStream(size_t size)
UINT8 * m_eos
end of stream (first address beyond written area)
HANDLE m_hFile
file handle
virtual void SetPos(short posMode, INT64 posOff)
virtual void Write(int *count, void *buffer)