123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #ifndef __BASE_CCREF_H__
- #define __BASE_CCREF_H__
- #include "platform/CCPlatformMacros.h"
- #include "base/ccConfig.h"
- #define CC_REF_LEAK_DETECTION 0
- NS_CC_BEGIN
- class Ref;
- class CC_DLL Clonable
- {
- public:
-
- virtual Clonable* clone() const = 0;
-
-
- virtual ~Clonable() {};
-
- CC_DEPRECATED_ATTRIBUTE Ref* copy() const
- {
-
- CC_ASSERT(false);
- return nullptr;
- }
- };
- class CC_DLL Ref
- {
- public:
-
- void retain();
-
- void release();
-
- Ref* autorelease();
-
- unsigned int getReferenceCount() const;
- protected:
-
- Ref();
- public:
-
- virtual ~Ref();
- protected:
-
- unsigned int _referenceCount;
- friend class AutoreleasePool;
- #if CC_ENABLE_SCRIPT_BINDING
- public:
-
- unsigned int _ID;
-
- int _luaID;
-
- void* _scriptObject;
-
- bool _rooted;
- #endif
-
- #if CC_REF_LEAK_DETECTION
- public:
- static void printLeaks();
- #endif
- };
- class Node;
- typedef void (Ref::*SEL_CallFunc)();
- typedef void (Ref::*SEL_CallFuncN)(Node*);
- typedef void (Ref::*SEL_CallFuncND)(Node*, void*);
- typedef void (Ref::*SEL_CallFuncO)(Ref*);
- typedef void (Ref::*SEL_MenuHandler)(Ref*);
- typedef void (Ref::*SEL_SCHEDULE)(float);
- #define CC_CALLFUNC_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFunc>(&_SELECTOR)
- #define CC_CALLFUNCN_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncN>(&_SELECTOR)
- #define CC_CALLFUNCND_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncND>(&_SELECTOR)
- #define CC_CALLFUNCO_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncO>(&_SELECTOR)
- #define CC_MENU_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_MenuHandler>(&_SELECTOR)
- #define CC_SCHEDULE_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)
- #define callfunc_selector(_SELECTOR) CC_CALLFUNC_SELECTOR(_SELECTOR)
- #define callfuncN_selector(_SELECTOR) CC_CALLFUNCN_SELECTOR(_SELECTOR)
- #define callfuncND_selector(_SELECTOR) CC_CALLFUNCND_SELECTOR(_SELECTOR)
- #define callfuncO_selector(_SELECTOR) CC_CALLFUNCO_SELECTOR(_SELECTOR)
- #define menu_selector(_SELECTOR) CC_MENU_SELECTOR(_SELECTOR)
- #define schedule_selector(_SELECTOR) CC_SCHEDULE_SELECTOR(_SELECTOR)
- NS_CC_END
- #endif
|