aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCJSONParser.h
diff options
context:
space:
mode:
authorGravatar CodaFi <devteam.codafi@gmail.com>2013-04-28 13:13:25 -0600
committerGravatar CodaFi <devteam.codafi@gmail.com>2013-04-28 13:13:25 -0600
commit10c9d0abf0e8009277fb2006cffb76b8a26865c7 (patch)
tree73dd16206a521984a5a26b479038a4d7300070c9 /src/core/basetypes/MCJSONParser.h
parent6216eee4d6c6514c2b1e324d1a999b0d7018ab7a (diff)
parent9a5c778214090b9c0fa58d65521c35b01cbcd663 (diff)
Merge remote-tracking branch 'upstream/master' into Providers-API
Merge upstream/master
Diffstat (limited to 'src/core/basetypes/MCJSONParser.h')
-rw-r--r--src/core/basetypes/MCJSONParser.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/core/basetypes/MCJSONParser.h b/src/core/basetypes/MCJSONParser.h
new file mode 100644
index 00000000..f27e924e
--- /dev/null
+++ b/src/core/basetypes/MCJSONParser.h
@@ -0,0 +1,66 @@
+//
+// JSONParser.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 4/17/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __MAILCORE_MCJSONPARSER_H_
+#define __MAILCORE_MCJSONPARSER_H_
+
+#include <MailCore/MCObject.h>
+#include <MailCore/MCICUTypes.h>
+
+namespace mailcore {
+
+ class Data;
+ class String;
+
+ class JSONParser : public Object {
+
+ public:
+ JSONParser();
+ virtual ~JSONParser();
+
+ virtual String * content();
+ virtual void setContent(String * content);
+
+ virtual unsigned int position();
+ virtual void setPosition(unsigned int position);
+
+ virtual Object * result();
+
+ virtual bool parse();
+
+ virtual bool isEndOfExpression();
+
+ static Object * objectFromData(Data * data);
+ static Object * objectFromString(String * str);
+
+ static Data * dataFromObject(Object * object);
+ static String * stringFromObject(Object * object);
+
+ private:
+ Object * mResult;
+ unsigned int mPosition;
+ String * mContent;
+ void init();
+
+ void skipBlank();
+ unsigned int skipBlank(unsigned int position);
+ bool parseDictionary();
+ bool scanCharacter(UChar ch, unsigned int position);
+ bool scanKeyword(String * str, unsigned int position);
+ bool parseArray();
+ bool parseString();
+ bool parseBoolean();
+ bool parseNull();
+ bool parseFloat();
+ static String * JSStringFromString(String * str);
+ static void appendStringFromObject(Object * object, String * string);
+ };
+
+}
+
+#endif \ No newline at end of file