aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCData.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/basetypes/MCData.cc')
-rw-r--r--src/core/basetypes/MCData.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/core/basetypes/MCData.cc b/src/core/basetypes/MCData.cc
index 7ae63988..b8f2fa4e 100644
--- a/src/core/basetypes/MCData.cc
+++ b/src/core/basetypes/MCData.cc
@@ -9,6 +9,8 @@
#include "MCString.h"
#include "MCHash.h"
#include "MCUtils.h"
+#include "MCHashMap.h"
+#include "MCBase64.h"
#define DEFAULT_CHARSET "iso-8859-1"
@@ -539,3 +541,34 @@ Data * Data::dataWithCapacity(int capacity)
Data * result = new Data(capacity);
return (Data *) result->autorelease();
}
+
+String * Data::base64String()
+{
+ char * encoded = MCEncodeBase64(bytes(), length());
+ String * result = String::stringWithUTF8Characters(encoded);
+ free(encoded);
+ return result;
+}
+
+HashMap * Data::serializable()
+{
+ HashMap * result = Object::serializable();
+ result->setObjectForKey(MCSTR("data"), base64String());
+ return result;
+}
+
+void Data::importSerializable(HashMap * serializable)
+{
+ setData(((String *) (serializable->objectForKey(MCSTR("data"))))->decodedBase64Data());
+}
+
+static void * createObject()
+{
+ return new Data();
+}
+
+__attribute__((constructor))
+static void initialize()
+{
+ Object::registerObjectConstructor("mailcore::Data", &createObject);
+}