72 lines
2.1 KiB
C++
72 lines
2.1 KiB
C++
#ifndef MAILCORE_MCOBJECT_H
|
|
|
|
#define MAILCORE_MCOBJECT_H
|
|
|
|
#include <pthread.h>
|
|
#if __APPLE__
|
|
#include <dispatch/dispatch.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
|
|
#define MC_PROPERTY(mcType, setter, getter) \
|
|
virtual void setter(mcType * getter); \
|
|
virtual mcType * getter();
|
|
|
|
namespace mailcore {
|
|
|
|
extern bool zombieEnabled;
|
|
|
|
class String;
|
|
class HashMap;
|
|
|
|
class Object {
|
|
public:
|
|
Object();
|
|
virtual ~Object();
|
|
|
|
virtual int retainCount();
|
|
virtual Object * retain();
|
|
virtual void release();
|
|
virtual Object * autorelease();
|
|
virtual String * description();
|
|
virtual String * className();
|
|
|
|
virtual bool isEqual(Object * otherObject);
|
|
virtual unsigned int hash();
|
|
|
|
// optional
|
|
virtual Object * copy();
|
|
virtual HashMap * serializable();
|
|
virtual void importSerializable(HashMap * serializable);
|
|
|
|
typedef void (Object::*Method) (void *);
|
|
virtual void performMethod(Method method, void * context);
|
|
virtual void performMethodOnMainThread(Method method, void * context, bool waitUntilDone = false);
|
|
virtual void performMethodAfterDelay(Method method, void * context, double delay);
|
|
#if __APPLE__
|
|
virtual void performMethodOnDispatchQueue(Method method, void * context, void * targetDispatchQueue, bool waitUntilDone = false);
|
|
virtual void performMethodOnDispatchQueueAfterDelay(Method method, void * context, void * targetDispatchQueue, double delay);
|
|
virtual void cancelDelayedPerformMethodOnDispatchQueue(Method method, void * context, void * targetDispatchQueue);
|
|
#endif
|
|
virtual void cancelDelayedPerformMethod(Method method, void * context);
|
|
|
|
// serialization utils
|
|
static void registerObjectConstructor(const char * className, void * (* objectConstructor)(void));
|
|
static Object * objectWithSerializable(HashMap * serializable);
|
|
|
|
public: // private
|
|
|
|
private:
|
|
pthread_mutex_t mLock;
|
|
int mCounter;
|
|
void init();
|
|
static void initObjectConstructors();
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|