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
{
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:
RageFileObjMemFile *m_pFile;
int m_iFilePos;
};
public:
RageFileObjMem( RageFileObjMemFile *pFile )
RageFileObjMem::RageFileObjMem( RageFileObjMemFile *pFile )
{
m_pFile = pFile;
m_iFilePos = 0;
++m_pFile->m_iRefs;
}
~RageFileObjMem()
RageFileObjMem::~RageFileObjMem()
{
m_pFile->m_Mutex.Lock();
const int iRefs = --m_pFile->m_iRefs;
@@ -44,7 +54,7 @@ public:
delete m_pFile;
}
int ReadInternal( void *buffer, size_t bytes )
int RageFileObjMem::ReadInternal( void *buffer, size_t bytes )
{
m_pFile->m_Mutex.Lock();
@@ -57,7 +67,7 @@ public:
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_sBuf.append( (const char *) buffer, bytes );
@@ -67,19 +77,19 @@ public:
return bytes;
}
int SeekInternal( int offset )
int RageFileObjMem::SeekInternal( int offset )
{
m_iFilePos = clamp( offset, 0, GetFileSize() );
return m_iFilePos;
}
int GetFileSize() const
int RageFileObjMem::GetFileSize() const
{
LockMut(m_pFile->m_Mutex);
return m_pFile->m_sBuf.size();
}
RageFileObj *Copy() const
RageFileObj *RageFileObjMem::Copy() const
{
m_pFile->m_Mutex.Unlock();
++m_pFile->m_iRefs;
@@ -90,7 +100,6 @@ public:
return pRet;
}
};
RageFileDriverMem::RageFileDriverMem():