home *** CD-ROM | disk | FTP | other *** search
- /* XObject.cpp */
-
- #include "XObject.hh"
- #include "XAutoReleasePool.hh"
-
- XAutoReleasePool XObject::sDefaultPool;
- XAutoReleasePool *XObject::sAutoReleasePool = &XObject::sDefaultPool;
-
- XObject::XObject()
- : retainCount(1), autoReleaseFlag(false)
- {
- }
-
- XObject *
- XObject::retain()
- {
- retainCount++;
- return this;
- }
-
- XObject *
- XObject::release()
- {
- if (--retainCount > 0 || autoReleaseFlag)
- return this;
- delete this;
- return NULL;
- }
-
- XObject *
- XObject::autorelease()
- {
- //autoReleaseFlag = true;
- AutoReleasePool().Add(this);
- retainCount--;
- return this;
- }
-
- XAutoReleasePool &
- XObject::AutoReleasePool()
- {
- return *sAutoReleasePool;
- }
-
- void
- XObject::SetAutoReleasePool(XAutoReleasePool *inPool)
- {
- sAutoReleasePool = (inPool != NULL) ? inPool : &sDefaultPool;
- }
-