#include "filestream.h"
using namespace P6R;
{
if (!ppIface) return eAccessFault;
*ppIface = NULL;
if (iid == IID_p6ICom ) *ppIface =
static_cast<p6IDataStream*
>(
this);
else if (iid == IID_p6IDataStream) *ppIface =
static_cast<p6IDataStream*
>(
this);
else return eNoInterface;
return eOk;
}
CFileStream::~CFileStream()
{
if (NULL != m_pFile ) fclose( m_pFile );
if (NULL != m_pFilePath) free( m_pFilePath );
}
{
if (m_bInitialized) return eAlreadyInitialized;
m_pFilePath = strdup( pFilePath );
if ( NULL != m_pFilePath )
{
return eOk;
}
else return eNoMemory;
}
{
if (!m_bInitialized) return P6R::eNotInitialized;
if ( NULL == m_pFile ) m_pFile = fopen ( m_pFilePath, "w+" );
if ( NULL == m_pFile )
return P6R::eFail;
else return P6R::eOk;
}
{
if (!m_bInitialized) return eNotInitialized;
if (NULL == m_pFile) return eInvalidState;
return (cWritten == cData ? eOk : eFail );
}
{
if (!m_bInitialized) return eNotInitialized;
if (NULL == m_pFile) return eOk;
if ( 0 == fclose( m_pFile ))
{
m_pFile = NULL;
return eOk;
}
else return eFail;
}