5 typedef unsigned char BYTE;
6 typedef unsigned int UINT;
15 CBufferFile( BYTE* lpBuffer, UINT nBufferSize )
19 mLength = nBufferSize;
24 virtual ~CBufferFile()
29 int Read( void *buf, int size )
31 int realReadSize = mLength - mCurIndex;
33 if( realReadSize > size )
38 if( 0 < realReadSize )
40 memcpy( buf, mBuffer + mCurIndex, realReadSize );
41 mCurIndex += realReadSize;
47 void Write( void *buf, int size )
49 memcpy( mBuffer + mCurIndex, buf, size );
53 int Seek( long offset, int origin )
64 nextIndex = mCurIndex + offset;
68 nextIndex = mLength - 1 - offset;
72 if( nextIndex >= mLength )
83 mCurIndex = nextIndex;
95 return ( mLength - 1 == mCurIndex );
117 void* MemFOpen( uint8_t* buffer, size_t dataSize, const char * const mode )
119 CBufferFile *pBufferFile = new CBufferFile( buffer, dataSize );
123 void MemFClose( const void *fp )
125 CBufferFile *file = (CBufferFile*)fp;
126 printf("MemFClose file 0x%x\n", file);
131 int MemFRead( void* buf, int eleSize, int count, const void *fp )
133 CBufferFile *file = (CBufferFile*)fp;
134 return file->Read( buf, eleSize * count );
137 void MemFWrite( void *buf, int size, const void *fp )
139 CBufferFile *file = (CBufferFile*)fp;
140 file->Write( buf, size );
143 int MemFSeek( const void *fp, int offset, int origin )
145 CBufferFile *file = (CBufferFile*)fp;
146 return file->Seek( offset, origin );
149 int MemFTell( const void *fp )
151 CBufferFile *file = (CBufferFile*)fp;
152 return file->GetPosition();
155 bool MemFEof( const void *fp )
157 CBufferFile *file = (CBufferFile*)fp;
158 return file->IsEnd();