#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory>
#include "cconsolestream.h"
using namespace P6R;
{
}
namespace P6EXAMPLES {
CConsoleStream::CConsoleStream() : m_cRef(0),
m_pBuffer(NULL),
m_cBuffer(0)
{ }
CConsoleStream::~CConsoleStream()
{
if (m_pBuffer) free(m_pBuffer);
}
{
if (!ppIface) return P6R::eAccessFault;
*ppIface = NULL;
if(iid == IID_p6ICom) *ppIface =
static_cast<p6IDataStream*
>(
this);
else if(iid == IID_p6IDataStream) *ppIface =
static_cast<p6IDataStream*
>(
this);
else return P6R::eNoInterface;
return P6R::eOk;
}
{
return m_cRef++;
}
{
if(0 == (tmp = (--m_cRef))) { delete this; }
return tmp;
}
{
if (m_cBuffer && cData+1 > m_cBuffer)
{
free(m_pBuffer);
m_pBuffer = NULL;
m_cBuffer = 0;
}
if (!m_pBuffer)
{
m_cBuffer = cData;
}
if (m_pBuffer)
{
memcpy(m_pBuffer,pData,cData);
m_pBuffer[cData] = '\0';
printf(m_pBuffer);
}
return P6R::eOk;
}
{
CConsoleStream *pObj = NULL;
if(NULL != pOuter) return P6R::eNoAgregation;
if(NULL == ppIface) return P6R::eAccessFault;
*ppIface = NULL;
if(NULL != (pObj = new (std::nothrow) CConsoleStream())) {
pObj->addref();
err = pObj->queryInterface(iid,ppIface);
pObj->release();
}
return err;
}
}