Files
FC1/Editor/Util/RefCountBase.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

85 lines
1.9 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2001.
// -------------------------------------------------------------------------
// File name: refcountbase.h
// Version: v1.00
// Created: 21/2/2002 by Timur.
// Compilers: Visual C++.NET
// Description: Reference counted base object.
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef __refcountbase_h__
#define __refcountbase_h__
#pragma once
//! Derive from this class to get reference counting for your class.
class CRYEDIT_API CRefCountBase : public CObject
{
public:
CRefCountBase() { m_nRefCount = 0; };
//! Add new refrence to this object.
int AddRef()
{
m_nRefCount++;
return m_nRefCount;
};
//! Release refrence to this object.
//! when reference count reaches zero, object is deleted.
int Release()
{
int refs = --m_nRefCount;
if (m_nRefCount <= 0)
delete this;
return refs;
}
protected:
virtual ~CRefCountBase() {};
private:
int m_nRefCount;
};
//////////////////////////////////////////////////////////////////////////
//! Derive from this class to get reference counting for your class.
//////////////////////////////////////////////////////////////////////////
template <class ParentClass>
class CRYEDIT_API TRefCountBase : public ParentClass
{
public:
TRefCountBase() { m_nRefCount = 0; };
//! Add new refrence to this object.
int AddRef()
{
m_nRefCount++;
return m_nRefCount;
};
//! Release refrence to this object.
//! when reference count reaches zero, object is deleted.
int Release()
{
int refs = --m_nRefCount;
if (m_nRefCount <= 0)
delete this;
return refs;
}
protected:
virtual ~TRefCountBase() {};
private:
int m_nRefCount;
};
#endif // __refcountbase_h__