aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/basetypes/MCObject.h')
-rw-r--r--src/core/basetypes/MCObject.h68
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();
+ };
}