aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCArray.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/basetypes/MCArray.cc')
-rw-r--r--src/core/basetypes/MCArray.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/core/basetypes/MCArray.cc b/src/core/basetypes/MCArray.cc
index c77d29ad..a59e3648 100644
--- a/src/core/basetypes/MCArray.cc
+++ b/src/core/basetypes/MCArray.cc
@@ -8,6 +8,7 @@
#include "MCString.h"
#include "MCLog.h"
#include "MCUtils.h"
+#include "MCIterator.h"
using namespace mailcore;
@@ -235,3 +236,33 @@ String * Array::componentsJoinedByString(String * delimiter)
}
return result;
}
+
+HashMap * Array::serializable()
+{
+ HashMap * result = Object::serializable();
+ Array * array = Array::array();
+ mc_foreacharray(Object, item, this) {
+ array->addObject(item->serializable());
+ }
+ result->setObjectForKey(MCSTR("items"), array);
+ return result;
+}
+
+void Array::importSerializable(HashMap * serializable)
+{
+ Array * array = (Array *) serializable->objectForKey(MCSTR("items"));
+ mc_foreacharray(HashMap, item, array) {
+ addObject(Object::objectWithSerializable(item));
+ }
+}
+
+static void * createObject()
+{
+ return new Array();
+}
+
+__attribute__((constructor))
+static void initialize()
+{
+ Object::registerObjectConstructor("mailcore::Array", &createObject);
+}