Magic_Game/core/Common/Object.cpp

51 lines
819 B
C++
Raw Normal View History

2018-04-21 21:24:46 +08:00
#include "..\e2dbase.h"
#include "..\e2dmanager.h"
e2d::autorelease_t const e2d::autorelease = e2d::autorelease_t();
2018-05-15 23:59:58 +08:00
void * operator new(size_t _Size, e2d::autorelease_t const &) E2D_NOEXCEPT
{
void* p = ::operator new (_Size, std::nothrow);
e2d::Object * newObject = static_cast<e2d::Object*>(p);
if (newObject)
2018-07-06 00:47:50 +08:00
{
newObject->autorelease();
2018-07-06 00:47:50 +08:00
}
return p;
}
void operator delete(void * _Block, e2d::autorelease_t const &) E2D_NOEXCEPT
{
::operator delete (_Block, std::nothrow);
}
e2d::Object::Object()
: _refCount(0)
{
}
2018-03-03 11:46:57 +08:00
e2d::Object::~Object()
{
}
2018-05-15 23:59:58 +08:00
void e2d::Object::autorelease()
{
GC::getInstance()->addObject(this);
2018-05-15 23:59:58 +08:00
}
2018-03-03 11:46:57 +08:00
void e2d::Object::retain()
{
2018-05-14 22:51:40 +08:00
++_refCount;
}
2018-03-03 11:46:57 +08:00
void e2d::Object::release()
{
_refCount--;
GC::getInstance()->notify();
}
2018-03-03 17:02:08 +08:00
int e2d::Object::getRefCount() const
2018-03-03 17:02:08 +08:00
{
return _refCount;
2018-05-15 23:59:58 +08:00
}