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