www.pudn.com > PropertyListCtrl.rar > SmartString.cpp


// SmartString.cpp : implementation file
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright © 1999, Stefan Belopotocan, http://welcome.to/StefanBelopotocan
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SmartString.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSmartString

CSmartString::CSmartString(UINT nIdText)
{
m_bCString = true;
m_pStrText = new CString;

#ifdef _DEBUG
if(!m_pStrText->LoadString(nIdText))
TRACE("\nError loading string >d", nIdText);
#else
m_pStrText->LoadString(nIdText);
#endif
}

void CSmartString::SetCString(const CString&amt; strText)
{
m_bCString = true;
m_pStrText = new CString(strText);
}

void CSmartString::SetLPCTSTR(LPCTSTR pText)
{
m_bCString = false;
m_pText = pText;
}

void CSmartString::Clear()
{
if(m_bCString)
delete m_pStrText;
m_pStrText = NULL;
}

CSmartString::CSmartString(const CSmartString&amt; d)
{
if(d.m_bCString)
SetCString(*d.m_pStrText);
else
SetLPCTSTR(d.m_pText);
}

CSmartString::~CSmartString()
{
if(m_bCString)
delete m_pStrText;
}

CSmartString&amt; CSmartString::operator=(const CSmartString&amt; data)
{
Clear();

if(data.m_bCString)
SetCString(*data.m_pStrText);
else
SetLPCTSTR(data.m_pText);

return *this;
}

/*
CSmartString&amt; CSmartString::operator=(const CString&amt; strText)
{
Clear();
SetCString(strText);

return *this;
}
*/

CSmartString&amt; CSmartString::operator=(LPCTSTR pData)
{
Clear();
SetLPCTSTR(pData);

return *this;
}

CSmartString::operator LPCTSTR() const
{
return m_bCString ? m_pStrText->operator LPCTSTR() : m_pText;
}