diff options
Diffstat (limited to 'src/core/basetypes/MCArray.cc')
-rw-r--r-- | src/core/basetypes/MCArray.cc | 31 |
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); +} |