#pragma once

namespace Mix{ namespace Tool{ namespace Win32{

	class Reference
	{
	private:
		int m_RefCount;

	protected:
		Reference( void );
		virtual ~Reference( void );

	protected:
		void AddRef( void );
		void Release( void );

		int GetRefCount( void ) const;
	};

}}}

#define MIX_REFERENCE_METHOD \
	void AddRef( void ) \
	{ \
		Reference::AddRef(); \
	} \
	void Release( void ) \
	{ \
		Reference::Release(); \
	}\
	int GetRefCount( void ) const \
	{ \
		return Reference::GetRefCount(); \
	}
