124 lines
4.1 KiB
C++
124 lines
4.1 KiB
C++
#include "stdafx.h"
|
||
#include "EtPackingStream.h"
|
||
#include "EtFileSystem.h"
|
||
#include <assert.h>
|
||
|
||
|
||
#ifdef _DEBUG
|
||
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
||
#endif
|
||
|
||
//-------------------------------------------------------------------------------------------------------------
|
||
|
||
CPackingStream::CPackingStream()
|
||
{
|
||
m_pStream = NULL;
|
||
}
|
||
|
||
CPackingStream::CPackingStream( const char *pFileName )
|
||
{
|
||
m_pStream = NULL;
|
||
Open( pFileName);
|
||
}
|
||
|
||
CPackingStream::~CPackingStream()
|
||
{
|
||
Close();
|
||
}
|
||
|
||
void CPackingStream::Activate()
|
||
{
|
||
Open( m_szFileName.c_str());
|
||
}
|
||
|
||
bool CPackingStream::Open( const char *pFileName )
|
||
{
|
||
Close();
|
||
|
||
#ifdef _UNICODE
|
||
std::wstring wstr;
|
||
|
||
WCHAR wszBuff[8192] = L"";
|
||
ZeroMemory(wszBuff, sizeof(WCHAR)*8192);
|
||
MultiByteToWideChar(CP_ACP, 0, pFileName, -1, wszBuff, 8192 );
|
||
wstr = wszBuff;
|
||
|
||
m_pStream = CEtFileSystem::GetInstance().OpenFile(wstr.c_str());
|
||
#else
|
||
m_pStream = CEtFileSystem::GetInstance().OpenFile(pFileName);
|
||
#endif
|
||
|
||
if ( m_pStream == NULL )
|
||
return false;
|
||
|
||
m_szFileName = pFileName;
|
||
|
||
return IsValid();
|
||
}
|
||
|
||
void CPackingStream::Close()
|
||
{
|
||
if ( m_pStream )
|
||
{
|
||
CEtFileSystem::GetInstance().CloseFile(m_pStream);
|
||
m_pStream = NULL;
|
||
}
|
||
}
|
||
|
||
bool CPackingStream::IsEnd() const
|
||
{
|
||
return false;
|
||
}
|
||
|
||
long CPackingStream::Tell()
|
||
{
|
||
_ASSERT( m_pStream );
|
||
|
||
if (!m_pStream)
|
||
return 0;
|
||
|
||
return Seek(0, SEEK_CUR);
|
||
}
|
||
|
||
int CPackingStream::Size() const
|
||
{
|
||
_ASSERT( m_pStream );
|
||
|
||
if (!m_pStream)
|
||
return -1;
|
||
|
||
return m_pStream->GetFileContext()->dwOriginalSize;
|
||
|
||
}
|
||
|
||
bool CPackingStream::IsValid() const
|
||
{
|
||
return ( m_pStream != NULL );
|
||
}
|
||
|
||
int CPackingStream::Seek( long lOffset, int nOrigin )
|
||
{
|
||
_ASSERT( m_pStream );
|
||
|
||
if ( m_pStream )
|
||
{
|
||
return m_pStream->Seek(lOffset, nOrigin);
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int CPackingStream::Read( void *pBuffer, int nSize )
|
||
{
|
||
if ( m_pStream )
|
||
{
|
||
return m_pStream->Read(pBuffer, nSize);
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
int CPackingStream::Write( const void *pBuffer, int nSize )
|
||
{
|
||
_ASSERT(false && "Can't write this Stream." );
|
||
return -1;
|
||
}
|
||
|