summaryrefslogtreecommitdiff
path: root/src/modules/json/JSONWorker.h
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-06-23 17:15:01 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-06-23 17:15:01 +0000
commit240b769d44fe6c50cabbf311f8e9fb1fae7cd80e (patch)
treefb464ca81e54b3133a475b19fd4cdf811b789fad /src/modules/json/JSONWorker.h
parent7a0f39abf558c7dde715a87d9356d92275d5d34e (diff)
libjson interface added to the core
git-svn-id: http://svn.miranda-ng.org/main/trunk@573 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'src/modules/json/JSONWorker.h')
-rw-r--r--src/modules/json/JSONWorker.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/modules/json/JSONWorker.h b/src/modules/json/JSONWorker.h
new file mode 100644
index 0000000000..373660743c
--- /dev/null
+++ b/src/modules/json/JSONWorker.h
@@ -0,0 +1,46 @@
+#ifndef JSON_WORKER_H
+#define JSON_WORKER_H
+
+#include "JSONNode.h"
+
+class JSONWorker {
+public:
+ static JSONNode parse(const json_string & json);
+ #ifdef JSON_VALIDATE
+ static JSONNode validate(const json_string & json);
+ #endif
+ #if defined JSON_DEBUG || defined JSON_SAFE
+ static json_char * RemoveWhiteSpace(const json_string & value_t, json_char & last);
+ #else
+ static json_char * RemoveWhiteSpace(const json_string & value_t);
+ #endif
+ static json_string RemoveWhiteSpaceAndComments(const json_string & value_t);
+
+ static void DoArray(const internalJSONNode * parent, const json_string & value_t);
+ static void DoNode(const internalJSONNode * parent, const json_string & value_t);
+
+ #ifdef JSON_LESS_MEMORY
+ #define NAME_ENCODED this, true
+ #define STRING_ENCODED this, false
+ static json_string FixString(const json_string & value_t, const internalJSONNode * flag, bool which);
+ #else
+ #define NAME_ENCODED _name_encoded
+ #define STRING_ENCODED _string_encoded
+ static json_string FixString(const json_string & value_t, bool & flag);
+ #endif
+ static json_string UnfixString(const json_string & value_t, bool flag);
+JSON_PRIVATE
+ static json_char Hex(const json_char * & pos);
+ static unsigned json_char UTF8(const json_char * & pos);
+ static json_char* UTF8_2(const json_char * & pos);
+ static json_string toUTF8(unsigned json_char p);
+ #ifdef JSON_UNICODE
+ static json_string UTF(const json_char * & pos);
+ static json_string toSurrogatePair(unsigned json_char pos);
+ #endif
+ static void SpecialChar(const json_char * & pos, json_string & res);
+ static size_t FindNextRelevant(json_char ch, const json_string & value_t, const size_t pos);
+ static void NewNode(const internalJSONNode * parent, const json_string & name, const json_string & value, bool array);
+};
+
+#endif