diff options
Diffstat (limited to 'src/core/basetypes/MCObject.h')
-rw-r--r-- | src/core/basetypes/MCObject.h | 68 |
1 files changed, 39 insertions, 29 deletions
diff --git a/src/core/basetypes/MCObject.h b/src/core/basetypes/MCObject.h index 01812191..6bde74e5 100644 --- a/src/core/basetypes/MCObject.h +++ b/src/core/basetypes/MCObject.h @@ -14,37 +14,47 @@ namespace mailcore { extern bool zombieEnabled; - class String; - - class Object { - public: - Object(); - virtual ~Object(); - - virtual int retainCount(); - virtual Object * retain(); - virtual void release(); - virtual Object * autorelease(); - virtual String * description(); - virtual String * className(); + 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(); - - 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); - virtual void cancelDelayedPerformMethod(Method method, void * context); + virtual bool isEqual(Object * otherObject); + virtual unsigned int hash(); - private: - pthread_mutex_t mLock; - int mCounter; - void init(); - }; + // 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); + virtual void cancelDelayedPerformMethod(Method method, void * context); + + // serialization utils + static void registerObjectConstructor(char * className, void * (* objectConstructor)(void)); + static Object * objectWithSerializable(HashMap * serializable); + + public: // private + + private: + pthread_mutex_t mLock; + int mCounter; + void init(); + static void initObjectConstructors(); + }; } |