내가 이딴건 왜 만들었을까...

class SafeData {
public:
    SafeData();
    virtual ~SafeData();
    void SetByCopy( Data inData );
    void SetByCopy( uint8 *d, int l );
    void SetByRef( Data inData );
    void SetByRef( uint8 *d, int l );
    uint8 *GetData();
    int GetLength();
    void Clear();
    
protected:
    uint8 *pBuffer;
    int length;
};

SafeData::SafeData()
{
    pBuffer = NULL;
    length = 0;
};

SafeData::~SafeData()
{
    Clear();
};

void SafeData::SetByCopy( Data inData )
{
    Clear();
    pBuffer = new uint8[inData.len];
    if( pBuffer==NULL )
        return;
    length = inData.len;
    memcpy( pBuffer, inData.d, length );
}

void SafeData::SetByCopy( uint8 *d, int l )
{
    Clear();
    pBuffer = new uint8[l];
    if( pBuffer==NULL )
        return;
    length = l;
    memcpy( pBuffer, d, length );
}

void SafeData::SetByRef( Data inData )
{
    Clear();
    pBuffer = inData.d;
    length = inData.len;
}

void SafeData::SetByRef( uint8 *d, int l )
{
    Clear();
    pBuffer = d;
    length = l;
}

uint8 *SafeData::GetData() {return pBuffer;}

int SafeData::GetLength() {return length;}

void SafeData::Clear()
{
    if( pBuffer )
    {
        delete [] pBuffer;
        pBuffer = NULL;
    }
    length = 0;
}

Posted by 배트
,