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)