This commit is contained in:
Glenn Maynard
2004-12-10 08:53:52 +00:00
parent 287a150db7
commit bcba89a2c9
+18 -9
View File
@@ -18,19 +18,29 @@ struct RageFileObjMemFile
class RageFileObjMem: public RageFileObj class RageFileObjMem: public RageFileObj
{ {
public:
RageFileObjMem( RageFileObjMemFile *pFile );
~RageFileObjMem();
int ReadInternal( void *buffer, size_t bytes );
int WriteInternal( const void *buffer, size_t bytes );
int SeekInternal( int offset );
int GetFileSize() const;
RageFileObj *Copy() const;
private: private:
RageFileObjMemFile *m_pFile; RageFileObjMemFile *m_pFile;
int m_iFilePos; int m_iFilePos;
};
public: RageFileObjMem::RageFileObjMem( RageFileObjMemFile *pFile )
RageFileObjMem( RageFileObjMemFile *pFile )
{ {
m_pFile = pFile; m_pFile = pFile;
m_iFilePos = 0; m_iFilePos = 0;
++m_pFile->m_iRefs; ++m_pFile->m_iRefs;
} }
~RageFileObjMem() RageFileObjMem::~RageFileObjMem()
{ {
m_pFile->m_Mutex.Lock(); m_pFile->m_Mutex.Lock();
const int iRefs = --m_pFile->m_iRefs; const int iRefs = --m_pFile->m_iRefs;
@@ -44,7 +54,7 @@ public:
delete m_pFile; delete m_pFile;
} }
int ReadInternal( void *buffer, size_t bytes ) int RageFileObjMem::ReadInternal( void *buffer, size_t bytes )
{ {
m_pFile->m_Mutex.Lock(); m_pFile->m_Mutex.Lock();
@@ -57,7 +67,7 @@ public:
return bytes; return bytes;
} }
int WriteInternal( const void *buffer, size_t bytes ) int RageFileObjMem::WriteInternal( const void *buffer, size_t bytes )
{ {
m_pFile->m_Mutex.Lock(); m_pFile->m_Mutex.Lock();
m_pFile->m_sBuf.append( (const char *) buffer, bytes ); m_pFile->m_sBuf.append( (const char *) buffer, bytes );
@@ -67,19 +77,19 @@ public:
return bytes; return bytes;
} }
int SeekInternal( int offset ) int RageFileObjMem::SeekInternal( int offset )
{ {
m_iFilePos = clamp( offset, 0, GetFileSize() ); m_iFilePos = clamp( offset, 0, GetFileSize() );
return m_iFilePos; return m_iFilePos;
} }
int GetFileSize() const int RageFileObjMem::GetFileSize() const
{ {
LockMut(m_pFile->m_Mutex); LockMut(m_pFile->m_Mutex);
return m_pFile->m_sBuf.size(); return m_pFile->m_sBuf.size();
} }
RageFileObj *Copy() const RageFileObj *RageFileObjMem::Copy() const
{ {
m_pFile->m_Mutex.Unlock(); m_pFile->m_Mutex.Unlock();
++m_pFile->m_iRefs; ++m_pFile->m_iRefs;
@@ -90,7 +100,6 @@ public:
return pRet; return pRet;
} }
};
RageFileDriverMem::RageFileDriverMem(): RageFileDriverMem::RageFileDriverMem():