diff options
Diffstat (limited to 'src/core/basetypes/MCAutoreleasePool.h')
-rw-r--r-- | src/core/basetypes/MCAutoreleasePool.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/basetypes/MCAutoreleasePool.h b/src/core/basetypes/MCAutoreleasePool.h new file mode 100644 index 00000000..ee30de87 --- /dev/null +++ b/src/core/basetypes/MCAutoreleasePool.h @@ -0,0 +1,34 @@ +#ifndef __MAILCORE_MCAUTORELEASEPOOL_H_ + +#define __MAILCORE_MCAUTORELEASEPOOL_H_ + +#include <mailcore/MCObject.h> +#include <libetpan/libetpan.h> +#include <pthread.h> + +namespace mailcore { + + class AutoreleasePool : public Object { + private: + static void init(); + static pthread_key_t autoreleasePoolStackKey; + carray * mPoolObjects; + static carray * createAutoreleasePoolStackIfNeeded(); + static void destroyAutoreleasePoolStack(void *); + static void initAutoreleasePoolStackKey(); + static AutoreleasePool * currentAutoreleasePool(); + virtual void add(Object * obj); + + public: + AutoreleasePool(); + virtual ~AutoreleasePool(); + + virtual String * className(); + virtual String * description(); + + static void autorelease(Object * obj); + }; + +} + +#endif |