cleanup
This commit is contained in:
@@ -18,20 +18,30 @@ 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;
|
||||
const bool bShouldDelete = (iRefs == 0 && m_pFile->m_bDeleted);
|
||||
@@ -42,10 +52,10 @@ public:
|
||||
* delete it. */
|
||||
if( bShouldDelete )
|
||||
delete m_pFile;
|
||||
}
|
||||
}
|
||||
|
||||
int ReadInternal( void *buffer, size_t bytes )
|
||||
{
|
||||
int RageFileObjMem::ReadInternal( void *buffer, size_t bytes )
|
||||
{
|
||||
m_pFile->m_Mutex.Lock();
|
||||
|
||||
m_iFilePos = min( m_iFilePos, GetFileSize() );
|
||||
@@ -55,32 +65,32 @@ public:
|
||||
m_pFile->m_Mutex.Unlock();
|
||||
|
||||
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 );
|
||||
m_pFile->m_Mutex.Unlock();
|
||||
|
||||
m_iFilePos += bytes;
|
||||
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;
|
||||
m_pFile->m_Mutex.Lock();
|
||||
@@ -89,8 +99,7 @@ public:
|
||||
pRet->m_iFilePos = m_iFilePos;
|
||||
|
||||
return pRet;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
RageFileDriverMem::RageFileDriverMem():
|
||||
|
||||
Reference in New Issue
Block a user