All pastes #168682 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-09-13 05:44 UTC
rendered paste body
class AutoReference :
	public DataReference
{
public:
	AutoReference( void );
	AutoReference( AutoReference &refToCopy );
	AutoReference( OneTimeData *originalData );

	virtual ~AutoReference( void );

	AutoReference& operator= ( AutoReference& rhs );

	unsigned int GetReferenceCount( void );
	void CountInc();

private:
	unsigned int count;
};

#include "AutoReference.h"

// YOUR IMPLEMENTATION FOR YOUR AutoReference CLASS
// GOES HERE.

AutoReference::AutoReference( void )
{
	DataReference();
	count = 0;
}

AutoReference::AutoReference( AutoReference &refToCopy )
{
	SetData( refToCopy.GetData() );
	count++;
	//refToCopy.CountInc();
}

AutoReference::AutoReference( OneTimeData *originalData )
{
	SetData( originalData );
	count = 1;
}

AutoReference::~AutoReference( void )
{
	if (count == 1)
	{
		DestroyData();
	}
	else
	{
		count--;
	}
}

AutoReference&
AutoReference::operator= (AutoReference& rhs)
{
	SetData ( rhs.GetData() );
	//rhs.CountInc();
	count++;
	return *this;
}

unsigned int AutoReference::GetReferenceCount( void )
{
	return count;
}

void AutoReference::CountInc( void )
{
	count++;
}