summaryrefslogtreecommitdiff
path: root/src/mir_core
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-05-25 17:40:14 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-05-25 17:40:14 +0000
commitfae17e42b5d32ff133426893ca115310d499ab64 (patch)
treed05b7a14f373f353d801af3befa89dcbfd89f7b4 /src/mir_core
parent0bab5b8df845b10cb0012be9baab1fe24e012c04 (diff)
JSONNode class exported directly from mir_core, all its functions became available
old json_* functions work as well git-svn-id: http://svn.miranda-ng.org/main/trunk@13831 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'src/mir_core')
-rw-r--r--src/mir_core/mir_core_12.vcxproj3
-rw-r--r--src/mir_core/mir_core_12.vcxproj.filters3
-rw-r--r--src/mir_core/src/json/JSONNode.cpp24
-rw-r--r--src/mir_core/src/json/JSONNode.h48
-rw-r--r--src/mir_core/src/json/JSONOptions.h6
-rw-r--r--src/mir_core/src/json/JSONWorker.h3
-rw-r--r--src/mir_core/src/json/libJSON.cpp25
-rw-r--r--src/mir_core/src/mir_core.def146
-rw-r--r--src/mir_core/src/mir_core64.def146
9 files changed, 354 insertions, 50 deletions
diff --git a/src/mir_core/mir_core_12.vcxproj b/src/mir_core/mir_core_12.vcxproj
index 6be5f7e179..3e54d32166 100644
--- a/src/mir_core/mir_core_12.vcxproj
+++ b/src/mir_core/mir_core_12.vcxproj
@@ -52,6 +52,9 @@
<ClCompile Include="src\json\JSONDebug.cpp">
<PrecompiledHeaderFile>../commonheaders.h</PrecompiledHeaderFile>
</ClCompile>
+ <ClCompile Include="src\json\JSONIterators.cpp">
+ <PrecompiledHeaderFile>../commonheaders.h</PrecompiledHeaderFile>
+ </ClCompile>
<ClCompile Include="src\json\JSONMemory.cpp">
<PrecompiledHeaderFile>../commonheaders.h</PrecompiledHeaderFile>
</ClCompile>
diff --git a/src/mir_core/mir_core_12.vcxproj.filters b/src/mir_core/mir_core_12.vcxproj.filters
index ad3bf82317..8719b38e69 100644
--- a/src/mir_core/mir_core_12.vcxproj.filters
+++ b/src/mir_core/mir_core_12.vcxproj.filters
@@ -109,6 +109,9 @@
<ClCompile Include="src\ui_utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\json\JSONIterators.cpp">
+ <Filter>Source Files\json</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\m_core.h">
diff --git a/src/mir_core/src/json/JSONNode.cpp b/src/mir_core/src/json/JSONNode.cpp
index 66099e7d43..8ea32563c1 100644
--- a/src/mir_core/src/json/JSONNode.cpp
+++ b/src/mir_core/src/json/JSONNode.cpp
@@ -41,6 +41,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
void JSONNode::decinternalAllocCount(void){ ++internalDeallocCount; }
#endif
+JSONNode nullNode(JSON_NULL);
+
#define IMPLEMENT_CTOR(type)\
JSONNode::JSONNode(const json_string & name_t, type value_t) : internal(internalJSONNode::newInternal()) {\
internal -> Set(value_t);\
@@ -181,7 +183,7 @@ JSONNode & JSONNode::at(json_index_t pos){
JSON_CHECK_INTERNAL();
if (pos >= internal -> size()) {
JSON_FAIL(JSON_TEXT("at() out of bounds"));
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
return (*this)[pos];
}
@@ -190,7 +192,7 @@ const JSONNode & JSONNode::at(json_index_t pos) const {
JSON_CHECK_INTERNAL();
if (pos >= internal -> size()) {
JSON_FAIL(JSON_TEXT("at() const out of bounds"));
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
return (*this)[pos];
}
@@ -208,7 +210,7 @@ const JSONNode & JSONNode::operator[](json_index_t pos) const {
return *(internal -> at(pos));
}
-JSONNode & JSONNode::at(const json_string & name_t){
+JSONNode & JSONNode::at(const json_char *name_t){
JSON_CHECK_INTERNAL();
JSON_ASSERT(type() == JSON_NODE, JSON_TEXT("at a non-iteratable node"));
makeUniqueInternal();
@@ -216,17 +218,17 @@ JSONNode & JSONNode::at(const json_string & name_t){
return *(*res);
}
JSON_FAIL(json_string(JSON_TEXT("at could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
-const JSONNode & JSONNode::at(const json_string & name_t) const {
+const JSONNode & JSONNode::at(const json_char *name_t) const {
JSON_CHECK_INTERNAL();
JSON_ASSERT(type() == JSON_NODE, JSON_TEXT("at a non-iteratable node"));
if (JSONNode ** res = internal -> at(name_t)) {
return *(*res);
}
JSON_FAIL(json_string(JSON_TEXT("at const could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
#ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
@@ -238,7 +240,7 @@ const JSONNode & JSONNode::at(const json_string & name_t) const {
return *(*res);
}
JSON_FAIL(json_string(JSON_TEXT("at_nocase could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
const JSONNode & JSONNode::at_nocase(const json_string & name_t) const {
@@ -248,7 +250,7 @@ const JSONNode & JSONNode::at(const json_string & name_t) const {
return *(*res);
}
JSON_FAIL(json_string(JSON_TEXT("at_nocase const could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
#endif
@@ -268,7 +270,7 @@ JSONNode JSON_PTR_LIB JSONNode::pop_back(json_index_t pos){
JSON_CHECK_INTERNAL();
if (pos >= internal -> size()) {
JSON_FAIL(JSON_TEXT("pop_back out of bounds"));
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
}
makeUniqueInternal();
#ifdef JSON_LIBRARY
@@ -290,7 +292,7 @@ JSONNode JSON_PTR_LIB JSONNode::pop_back(const json_string & name_t){
return *(temp.mynode);
}
JSON_FAIL(json_string(JSON_TEXT("pop_back const could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
#endif
}
@@ -306,7 +308,7 @@ JSONNode JSON_PTR_LIB JSONNode::pop_back(const json_string & name_t){
return *(temp.mynode);
}
JSON_FAIL(json_string(JSON_TEXT("pop_back_nocase could not find child by name: ")) + name_t);
- throw std::out_of_range(EMPTY_STRING2);
+ return nullNode;
#endif
}
#endif
diff --git a/src/mir_core/src/json/JSONNode.h b/src/mir_core/src/json/JSONNode.h
index dfb6ff01f3..8e415adfe3 100644
--- a/src/mir_core/src/json/JSONNode.h
+++ b/src/mir_core/src/json/JSONNode.h
@@ -79,7 +79,8 @@
for argument checking and throwing exceptions if needed.
*/
-class JSONNode {
+class MIR_CORE_EXPORT JSONNode
+{
public:
explicit JSONNode(char mytype = JSON_NODE);
#define DECLARE_CTOR(type) JSONNode(const json_string & name_t, type value_t)
@@ -88,6 +89,8 @@ public:
JSONNode(const JSONNode & orig);
~JSONNode(void);
+ static JSONNode parse(const json_char *str);
+
json_index_t size(void) const;
bool empty(void) const;
void clear(void);
@@ -126,14 +129,14 @@ public:
JSONNode & operator[](json_index_t pos);
const JSONNode & operator[](json_index_t pos) const;
- JSONNode & at(const json_string & name_t);
- const JSONNode & at(const json_string & name_t) const;
+ JSONNode & at(const json_char *name_t);
+ const JSONNode & at(const json_char *name_t) const;
#ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
JSONNode & at_nocase(const json_string & name_t);
const JSONNode & at_nocase(const json_string & name_t) const;
#endif
- JSONNode & operator[](const json_string & name_t);
- const JSONNode & operator[](const json_string & name_t) const;
+ JSONNode & operator[](const json_char *name_t);
+ const JSONNode & operator[](const json_char *name_t) const;
#ifdef JSON_LIBRARY
void push_back(JSONNode *node);
#else
@@ -208,8 +211,8 @@ public:
struct const_iterator {
inline const_iterator& operator ++(void){ ++it; return *this; }
inline const_iterator& operator --(void){ --it; return *this; }
- inline const_iterator& operator +=(long i){ it += i; return *this; }
- inline const_iterator& operator -=(long i){ it -= i; return *this; }
+ inline const_iterator& operator +=(size_t i) { it += i; return *this; }
+ inline const_iterator& operator -=(size_t i) { it -= i; return *this; }
inline const_iterator operator ++(int){
const_iterator result(*this);
++it;
@@ -220,12 +223,12 @@ public:
--it;
return result;
}
- inline const_iterator operator +(long i) const {
+ inline const_iterator operator +(size_t i) const {
const_iterator result(*this);
result.it += i;
return result;
}
- inline const_iterator operator -(long i) const {
+ inline const_iterator operator -(size_t i) const {
const_iterator result(*this);
result.it -= i;
return result;
@@ -251,8 +254,8 @@ public:
struct reverse_iterator {
inline reverse_iterator& operator ++(void){ --it; return *this; }
inline reverse_iterator& operator --(void){ ++it; return *this; }
- inline reverse_iterator& operator +=(long i){ it -= i; return *this; }
- inline reverse_iterator& operator -=(long i){ it += i; return *this; }
+ inline reverse_iterator& operator +=(size_t i){ it -= i; return *this; }
+ inline reverse_iterator& operator -=(size_t i) { it += i; return *this; }
inline reverse_iterator operator ++(int){
reverse_iterator result(*this);
--it;
@@ -263,12 +266,12 @@ public:
++it;
return result;
}
- inline reverse_iterator operator +(long i) const {
+ inline reverse_iterator operator +(size_t i) const {
reverse_iterator result(*this);
result.it -= i;
return result;
}
- inline reverse_iterator operator -(long i) const {
+ inline reverse_iterator operator -(size_t i) const {
reverse_iterator result(*this);
result.it += i;
return result;
@@ -294,8 +297,8 @@ public:
struct reverse_const_iterator {
inline reverse_const_iterator& operator ++(void){ --it; return *this; }
inline reverse_const_iterator& operator --(void){ ++it; return *this; }
- inline reverse_const_iterator& operator +=(long i){ it -= i; return *this; }
- inline reverse_const_iterator& operator -=(long i){ it += i; return *this; }
+ inline reverse_const_iterator& operator +=(size_t i){ it -= i; return *this; }
+ inline reverse_const_iterator& operator -=(size_t i){ it += i; return *this; }
inline reverse_const_iterator operator ++(int){
reverse_const_iterator result(*this);
--it;
@@ -306,12 +309,12 @@ public:
++it;
return result;
}
- inline reverse_const_iterator operator +(long i) const {
+ inline reverse_const_iterator operator +(size_t i) const {
reverse_const_iterator result(*this);
result.it -= i;
return result;
}
- inline reverse_const_iterator operator -(long i) const {
+ inline reverse_const_iterator operator -(size_t i) const {
reverse_const_iterator result(*this);
result.it += i;
return result;
@@ -552,14 +555,11 @@ inline bool JSONNode::as_bool(void) const {
return JSONBase64::json_decode64(as_string());
}
#endif
-inline JSONNode & JSONNode::operator[](const json_string & name_t){
- JSON_CHECK_INTERNAL();
- makeUniqueInternal();
- return *(*(internal -> at(name_t)));
+inline JSONNode & JSONNode::operator[](const json_char *name_t) {
+ return at(name_t);
}
-inline const JSONNode & JSONNode::operator[](const json_string & name_t) const {
- JSON_CHECK_INTERNAL();
- return *(*(internal -> at(name_t)));
+inline const JSONNode & JSONNode::operator[](const json_char *name_t) const {
+ return at(name_t);
}
#ifdef JSON_LIBRARY
inline void JSONNode::push_back(JSONNode * child){
diff --git a/src/mir_core/src/json/JSONOptions.h b/src/mir_core/src/json/JSONOptions.h
index d4bd343677..453d37c4e2 100644
--- a/src/mir_core/src/json/JSONOptions.h
+++ b/src/mir_core/src/json/JSONOptions.h
@@ -10,7 +10,7 @@
* JSON_LIBRARY must be declared if libjson is compiled as a static or dynamic
* library. This exposes a C-style interface, but none of the inner workings of libjson
*/
-#define JSON_LIBRARY
+//#define JSON_LIBRARY
/*
* JSON_DEBUG is used to perform extra error checking. Because libjson usually
@@ -81,7 +81,7 @@
* pool. With this option turned on, the default behavior is still done internally unless
* a callback is registered. So you can have this option on and mot use it.
*/
-#define JSON_MEMORY_CALLBACKS
+//#define JSON_MEMORY_CALLBACKS
/*
* JSON_MEMORY_MANAGE is used to create functionality to automatically track and clean
@@ -117,7 +117,7 @@
* JSON_ITERATORS turns on all of libjson's iterating functionality. This would usually
* only be turned off while compiling for use with C
*/
-//#define JSON_ITERATORS
+#define JSON_ITERATORS
/*
* JSON_WRITER turns on libjson's writing capabilties. Without this libjson can only
diff --git a/src/mir_core/src/json/JSONWorker.h b/src/mir_core/src/json/JSONWorker.h
index f425e12e86..4811e904b3 100644
--- a/src/mir_core/src/json/JSONWorker.h
+++ b/src/mir_core/src/json/JSONWorker.h
@@ -3,7 +3,8 @@
#include "JSONNode.h"
-class JSONWorker {
+class MIR_CORE_EXPORT JSONWorker
+{
public:
static JSONNode parse(const json_string & json);
#ifdef JSON_VALIDATE
diff --git a/src/mir_core/src/json/libJSON.cpp b/src/mir_core/src/json/libJSON.cpp
index e32a3b3256..2a735ec3b4 100644
--- a/src/mir_core/src/json/libJSON.cpp
+++ b/src/mir_core/src/json/libJSON.cpp
@@ -49,6 +49,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static const json_char * EMPTY_CSTRING = JSON_TEXT("");
#endif
+extern JSONNode nullNode;
+
inline TCHAR* toCString(const json_string & str)
{
return mir_utf8decodeT( str.c_str());
@@ -84,6 +86,11 @@ MIR_CORE_DLL(void) json_delete(JSONNODE *node){
}
#endif
+JSONNode JSONNode::parse(const json_char *str)
+{
+ return JSONWorker::parse(str);
+}
+
MIR_CORE_DLL(JSONNODE*) json_parse(const json_char *json){
JSON_ASSERT_SAFE(json, JSON_TEXT("null ptr to json_parse"), return 0;);
try {
@@ -397,19 +404,15 @@ MIR_CORE_DLL(void) json_reserve(JSONNODE *node, json_index_t siz){
MIR_CORE_DLL(JSONNODE*) json_at(JSONNODE *node, json_index_t pos){
JSON_ASSERT_SAFE(node, JSON_TEXT("null node to json_at"), return 0;);
- try {
- return &((JSONNode*)node) -> at(pos);
- } catch (std::out_of_range){}
- return 0;
+ JSONNode &res = ((JSONNode*)node) -> at(pos);
+ return (&res == &nullNode) ? NULL : &res;
}
MIR_CORE_DLL(JSONNODE*) json_get(JSONNODE *node, const json_char *name){
JSON_ASSERT_SAFE(node, JSON_TEXT("null node to json_get"), return 0;);
JSON_ASSERT_SAFE(name, JSON_TEXT("null node to json_get. Did you mean to use json_at?"), return 0;);
- try {
- return &((JSONNode*)node) -> at(name);
- } catch (std::out_of_range){}
- return 0;
+ JSONNode &res = ((JSONNode*)node)->at(name);
+ return (&res == &nullNode) ? NULL : &res;
}
#ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
@@ -435,18 +438,18 @@ MIR_CORE_DLL(void) json_push_back(JSONNODE *node, JSONNODE *node2){
#ifdef JSON_MEMORY_MANAGE
NodeHandler.remove(node2);
#endif
- ((JSONNode*)node) -> push_back((JSONNode*)node2);
+ ((JSONNode*)node) -> push_back(*(JSONNode*)node2);
}
MIR_CORE_DLL(JSONNODE*) json_pop_back_at(JSONNODE *node, json_index_t pos){
JSON_ASSERT_SAFE(node, JSON_TEXT("null node to json_pop_back_i"), return 0;);
- return MANAGER_INSERT(((JSONNode*)node) -> pop_back(pos));
+ return MANAGER_INSERT(&((JSONNode*)node) -> pop_back(pos));
}
MIR_CORE_DLL(JSONNODE*) json_pop_back(JSONNODE *node, const json_char *name){
JSON_ASSERT_SAFE(node, JSON_TEXT("null node to json_pop_back"), return 0;);
JSON_ASSERT_SAFE(name, JSON_TEXT("null name to json_pop_back. Did you mean to use json_pop_back_at?"), return 0;);
- return MANAGER_INSERT(((JSONNode*)node) -> pop_back(name));
+ return MANAGER_INSERT(&((JSONNode*)node) -> pop_back(name));
}
//comparison
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def
index b2157d77e4..ded290235f 100644
--- a/src/mir_core/src/mir_core.def
+++ b/src/mir_core/src/mir_core.def
@@ -1093,3 +1093,149 @@ Proto_RegisterModule @1074 NONAME
?Fail@CDlgBase@@QAEXXZ @1096 NONAME
?OnApply@CCtrlPages@@MAEXXZ @1097 NONAME
?OnReset@CCtrlPages@@MAEXXZ @1098 NONAME
+??0JSONNode@@AAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1099 NONAME
+??0JSONNode@@AAE@PAVinternalJSONNode@@@Z @1100 NONAME
+??0JSONNode@@AAE@_NAAV0@@Z @1101 NONAME
+??0JSONNode@@QAE@ABV0@@Z @1102 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z @1103 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@D@Z @1104 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@E@Z @1105 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@F@Z @1106 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z @1107 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z @1108 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z @1109 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@J@Z @1110 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@K@Z @1111 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@M@Z @1112 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@N@Z @1113 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBD@Z @1114 NONAME
+??0JSONNode@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z @1115 NONAME
+??0JSONNode@@QAE@D@Z @1116 NONAME
+??1JSONNode@@QAE@XZ @1117 NONAME
+??4JSONNode@@QAEAAV0@ABV0@@Z @1118 NONAME
+??4JSONNode@@QAEAAV0@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1119 NONAME
+??4JSONNode@@QAEAAV0@D@Z @1120 NONAME
+??4JSONNode@@QAEAAV0@E@Z @1121 NONAME
+??4JSONNode@@QAEAAV0@F@Z @1122 NONAME
+??4JSONNode@@QAEAAV0@G@Z @1123 NONAME
+??4JSONNode@@QAEAAV0@H@Z @1124 NONAME
+??4JSONNode@@QAEAAV0@I@Z @1125 NONAME
+??4JSONNode@@QAEAAV0@J@Z @1126 NONAME
+??4JSONNode@@QAEAAV0@K@Z @1127 NONAME
+??4JSONNode@@QAEAAV0@M@Z @1128 NONAME
+??4JSONNode@@QAEAAV0@N@Z @1129 NONAME
+??4JSONNode@@QAEAAV0@PBD@Z @1130 NONAME
+??4JSONNode@@QAEAAV0@_N@Z @1131 NONAME
+??4JSONWorker@@QAEAAV0@ABV0@@Z @1132 NONAME
+??8JSONNode@@QBE_NABV0@@Z @1133 NONAME
+??8JSONNode@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1134 NONAME
+??8JSONNode@@QBE_ND@Z @1135 NONAME
+??8JSONNode@@QBE_NE@Z @1136 NONAME
+??8JSONNode@@QBE_NF@Z @1137 NONAME
+??8JSONNode@@QBE_NG@Z @1138 NONAME
+??8JSONNode@@QBE_NH@Z @1139 NONAME
+??8JSONNode@@QBE_NI@Z @1140 NONAME
+??8JSONNode@@QBE_NJ@Z @1141 NONAME
+??8JSONNode@@QBE_NK@Z @1142 NONAME
+??8JSONNode@@QBE_NM@Z @1143 NONAME
+??8JSONNode@@QBE_NN@Z @1144 NONAME
+??8JSONNode@@QBE_NPBD@Z @1145 NONAME
+??8JSONNode@@QBE_N_N@Z @1146 NONAME
+??9JSONNode@@QBE_NABV0@@Z @1147 NONAME
+??9JSONNode@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1148 NONAME
+??9JSONNode@@QBE_ND@Z @1149 NONAME
+??9JSONNode@@QBE_NE@Z @1150 NONAME
+??9JSONNode@@QBE_NF@Z @1151 NONAME
+??9JSONNode@@QBE_NG@Z @1152 NONAME
+??9JSONNode@@QBE_NH@Z @1153 NONAME
+??9JSONNode@@QBE_NI@Z @1154 NONAME
+??9JSONNode@@QBE_NJ@Z @1155 NONAME
+??9JSONNode@@QBE_NK@Z @1156 NONAME
+??9JSONNode@@QBE_NM@Z @1157 NONAME
+??9JSONNode@@QBE_NN@Z @1158 NONAME
+??9JSONNode@@QBE_NPBD@Z @1159 NONAME
+??9JSONNode@@QBE_N_N@Z @1160 NONAME
+??AJSONNode@@QAEAAV0@I@Z @1161 NONAME
+??AJSONNode@@QAEAAV0@PBD@Z @1162 NONAME
+??AJSONNode@@QBEABV0@I@Z @1163 NONAME
+??AJSONNode@@QBEABV0@PBD@Z @1164 NONAME
+??_FJSONNode@@QAEXXZ @1165 NONAME
+?DoArray@JSONWorker@@SAXPBVinternalJSONNode@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1166 NONAME
+?DoNode@JSONWorker@@SAXPBVinternalJSONNode@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1167 NONAME
+?FindNextRelevant@JSONWorker@@CAIDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z @1168 NONAME
+?FixString@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV23@AA_N@Z @1169 NONAME
+?Hex@JSONWorker@@CADAAPBD@Z @1170 NONAME
+?NewNode@JSONWorker@@CAXPBVinternalJSONNode@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@1_N@Z @1171 NONAME
+?RemoveWhiteSpace@JSONWorker@@SAPADABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAD@Z @1172 NONAME
+?RemoveWhiteSpaceAndComments@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV23@@Z @1173 NONAME
+?SpecialChar@JSONWorker@@CAXAAPBDAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1174 NONAME
+?UTF8@JSONWorker@@CAEAAPBD@Z @1175 NONAME
+?UTF8_2@JSONWorker@@CAPADAAPBD@Z @1176 NONAME
+?UnfixString@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV23@_N@Z @1177 NONAME
+?as_array@JSONNode@@QBE?AV1@XZ @1178 NONAME
+?as_bool@JSONNode@@QBE_NXZ @1179 NONAME
+?as_float@JSONNode@@QBENXZ @1180 NONAME
+?as_int@JSONNode@@QBEJXZ @1181 NONAME
+?as_node@JSONNode@@QBE?AV1@XZ @1182 NONAME
+?as_string@JSONNode@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1183 NONAME
+?at@JSONNode@@QAEAAV1@I@Z @1184 NONAME
+?at@JSONNode@@QAEAAV1@PBD@Z @1185 NONAME
+?at@JSONNode@@QBEABV1@I@Z @1186 NONAME
+?at@JSONNode@@QBEABV1@PBD@Z @1187 NONAME
+?begin@JSONNode@@QAE?AUiterator@1@XZ @1188 NONAME
+?begin@JSONNode@@QBE?AUconst_iterator@1@XZ @1189 NONAME
+?cast@JSONNode@@QAEXD@Z @1190 NONAME
+?clear@JSONNode@@QAEXXZ @1191 NONAME
+?decRef@JSONNode@@AAEXXZ @1192 NONAME
+?deleteJSONNode@JSONNode@@SAXPAV1@@Z @1193 NONAME
+?duplicate@JSONNode@@QBE?AV1@XZ @1194 NONAME
+?empty@JSONNode@@QBE_NXZ @1195 NONAME
+?end@JSONNode@@QAE?AUiterator@1@XZ @1196 NONAME
+?end@JSONNode@@QBE?AUconst_iterator@1@XZ @1197 NONAME
+?erase@JSONNode@@QAE?AUiterator@1@U21@@Z @1198 NONAME
+?erase@JSONNode@@QAE?AUiterator@1@U21@ABU21@@Z @1199 NONAME
+?erase@JSONNode@@QAE?AUreverse_iterator@1@U21@@Z @1200 NONAME
+?erase@JSONNode@@QAE?AUreverse_iterator@1@U21@ABU21@@Z @1201 NONAME
+?find@JSONNode@@QAE?AUiterator@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1202 NONAME
+?find@JSONNode@@QBE?AUconst_iterator@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1203 NONAME
+?insert@JSONNode@@QAE?AUiterator@1@U21@ABU21@1@Z @1204 NONAME
+?insert@JSONNode@@QAE?AUiterator@1@U21@ABUconst_iterator@1@1@Z @1205 NONAME
+?insert@JSONNode@@QAE?AUiterator@1@U21@ABUreverse_const_iterator@1@1@Z @1206 NONAME
+?insert@JSONNode@@QAE?AUiterator@1@U21@ABUreverse_iterator@1@1@Z @1207 NONAME
+?insert@JSONNode@@QAE?AUiterator@1@U21@ABV1@@Z @1208 NONAME
+?insert@JSONNode@@QAE?AUreverse_iterator@1@U21@ABU21@1@Z @1209 NONAME
+?insert@JSONNode@@QAE?AUreverse_iterator@1@U21@ABUconst_iterator@1@1@Z @1210 NONAME
+?insert@JSONNode@@QAE?AUreverse_iterator@1@U21@ABUiterator@1@1@Z @1211 NONAME
+?insert@JSONNode@@QAE?AUreverse_iterator@1@U21@ABUreverse_const_iterator@1@1@Z @1212 NONAME
+?insert@JSONNode@@QAE?AUreverse_iterator@1@U21@ABV1@@Z @1213 NONAME
+?insertFFF@JSONNode@@AAE?AUiterator@1@U21@QAPAV1@1@Z @1214 NONAME
+?insertFRR@JSONNode@@AAE?AUiterator@1@U21@QAPAV1@1@Z @1215 NONAME
+?insertRFF@JSONNode@@AAE?AUreverse_iterator@1@U21@QAPAV1@1@Z @1216 NONAME
+?insertRRR@JSONNode@@AAE?AUreverse_iterator@1@U21@QAPAV1@1@Z @1217 NONAME
+?makeUniqueInternal@JSONNode@@AAEXXZ @1218 NONAME
+?merge@JSONNode@@AAEXPAV1@@Z @1219 NONAME
+?merge@JSONNode@@QAAXIZZ @1220 NONAME
+?merge@JSONNode@@QAEXAAV1@@Z @1221 NONAME
+?name@JSONNode@@QBEPBDXZ @1222 NONAME
+?newJSONNode@JSONNode@@CAPAV1@ABV1@@Z @1223 NONAME
+?newJSONNode@JSONNode@@CAPAV1@PAVinternalJSONNode@@@Z @1224 NONAME
+?newJSONNode_Shallow@JSONNode@@SAPAV1@ABV1@@Z @1225 NONAME
+?nullify@JSONNode@@QAEXXZ @1226 NONAME
+?parse@JSONNode@@SA?AV1@PBD@Z @1227 NONAME
+?parse@JSONWorker@@SA?AVJSONNode@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1228 NONAME
+?pop_back@JSONNode@@QAE?AV1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1229 NONAME
+?pop_back@JSONNode@@QAE?AV1@I@Z @1230 NONAME
+?preparse@JSONNode@@QAEXXZ @1231 NONAME
+?push_back@JSONNode@@QAEXABV1@@Z @1232 NONAME
+?rbegin@JSONNode@@QAE?AUreverse_iterator@1@XZ @1233 NONAME
+?rbegin@JSONNode@@QBE?AUreverse_const_iterator@1@XZ @1234 NONAME
+?rend@JSONNode@@QAE?AUreverse_iterator@1@XZ @1235 NONAME
+?rend@JSONNode@@QBE?AUreverse_const_iterator@1@XZ @1236 NONAME
+?reserve@JSONNode@@QAEXI@Z @1237 NONAME
+?set_name@JSONNode@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1238 NONAME
+?size@JSONNode@@QBEIXZ @1239 NONAME
+?swap@JSONNode@@QAEXAAV1@@Z @1240 NONAME
+?toUTF8@JSONWorker@@CA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@E@Z @1241 NONAME
+?type@JSONNode@@QBEEXZ @1242 NONAME
+?write@JSONNode@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1243 NONAME
+?write_formatted@JSONNode@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1244 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def
index 3b8d10cae3..84b561fc13 100644
--- a/src/mir_core/src/mir_core64.def
+++ b/src/mir_core/src/mir_core64.def
@@ -1093,3 +1093,149 @@ Proto_RegisterModule @1074 NONAME
?Fail@CDlgBase@@QEAAXXZ @1096 NONAME
?OnApply@CCtrlPages@@MEAAXXZ @1097 NONAME
?OnReset@CCtrlPages@@MEAAXXZ @1098 NONAME
+??0JSONNode@@AEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1099 NONAME
+??0JSONNode@@AEAA@PEAVinternalJSONNode@@@Z @1100 NONAME
+??0JSONNode@@AEAA@_NAEAV0@@Z @1101 NONAME
+??0JSONNode@@QEAA@AEBV0@@Z @1102 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z @1103 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@D@Z @1104 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@E@Z @1105 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@F@Z @1106 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@G@Z @1107 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z @1108 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z @1109 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@J@Z @1110 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@K@Z @1111 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@M@Z @1112 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@N@Z @1113 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z @1114 NONAME
+??0JSONNode@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z @1115 NONAME
+??0JSONNode@@QEAA@D@Z @1116 NONAME
+??1JSONNode@@QEAA@XZ @1117 NONAME
+??4JSONNode@@QEAAAEAV0@AEBV0@@Z @1118 NONAME
+??4JSONNode@@QEAAAEAV0@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1119 NONAME
+??4JSONNode@@QEAAAEAV0@D@Z @1120 NONAME
+??4JSONNode@@QEAAAEAV0@E@Z @1121 NONAME
+??4JSONNode@@QEAAAEAV0@F@Z @1122 NONAME
+??4JSONNode@@QEAAAEAV0@G@Z @1123 NONAME
+??4JSONNode@@QEAAAEAV0@H@Z @1124 NONAME
+??4JSONNode@@QEAAAEAV0@I@Z @1125 NONAME
+??4JSONNode@@QEAAAEAV0@J@Z @1126 NONAME
+??4JSONNode@@QEAAAEAV0@K@Z @1127 NONAME
+??4JSONNode@@QEAAAEAV0@M@Z @1128 NONAME
+??4JSONNode@@QEAAAEAV0@N@Z @1129 NONAME
+??4JSONNode@@QEAAAEAV0@PEBD@Z @1130 NONAME
+??4JSONNode@@QEAAAEAV0@_N@Z @1131 NONAME
+??4JSONWorker@@QEAAAEAV0@AEBV0@@Z @1132 NONAME
+??8JSONNode@@QEBA_NAEBV0@@Z @1133 NONAME
+??8JSONNode@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1134 NONAME
+??8JSONNode@@QEBA_ND@Z @1135 NONAME
+??8JSONNode@@QEBA_NE@Z @1136 NONAME
+??8JSONNode@@QEBA_NF@Z @1137 NONAME
+??8JSONNode@@QEBA_NG@Z @1138 NONAME
+??8JSONNode@@QEBA_NH@Z @1139 NONAME
+??8JSONNode@@QEBA_NI@Z @1140 NONAME
+??8JSONNode@@QEBA_NJ@Z @1141 NONAME
+??8JSONNode@@QEBA_NK@Z @1142 NONAME
+??8JSONNode@@QEBA_NM@Z @1143 NONAME
+??8JSONNode@@QEBA_NN@Z @1144 NONAME
+??8JSONNode@@QEBA_NPEBD@Z @1145 NONAME
+??8JSONNode@@QEBA_N_N@Z @1146 NONAME
+??9JSONNode@@QEBA_NAEBV0@@Z @1147 NONAME
+??9JSONNode@@QEBA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1148 NONAME
+??9JSONNode@@QEBA_ND@Z @1149 NONAME
+??9JSONNode@@QEBA_NE@Z @1150 NONAME
+??9JSONNode@@QEBA_NF@Z @1151 NONAME
+??9JSONNode@@QEBA_NG@Z @1152 NONAME
+??9JSONNode@@QEBA_NH@Z @1153 NONAME
+??9JSONNode@@QEBA_NI@Z @1154 NONAME
+??9JSONNode@@QEBA_NJ@Z @1155 NONAME
+??9JSONNode@@QEBA_NK@Z @1156 NONAME
+??9JSONNode@@QEBA_NM@Z @1157 NONAME
+??9JSONNode@@QEBA_NN@Z @1158 NONAME
+??9JSONNode@@QEBA_NPEBD@Z @1159 NONAME
+??9JSONNode@@QEBA_N_N@Z @1160 NONAME
+??AJSONNode@@QEAAAEAV0@PEBD@Z @1161 NONAME
+??AJSONNode@@QEAAAEAV0@_K@Z @1162 NONAME
+??AJSONNode@@QEBAAEBV0@PEBD@Z @1163 NONAME
+??AJSONNode@@QEBAAEBV0@_K@Z @1164 NONAME
+??_FJSONNode@@QEAAXXZ @1165 NONAME
+?DoArray@JSONWorker@@SAXPEBVinternalJSONNode@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1166 NONAME
+?DoNode@JSONWorker@@SAXPEBVinternalJSONNode@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1167 NONAME
+?FindNextRelevant@JSONWorker@@CA_KDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z @1168 NONAME
+?FixString@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV23@AEA_N@Z @1169 NONAME
+?Hex@JSONWorker@@CADAEAPEBD@Z @1170 NONAME
+?NewNode@JSONWorker@@CAXPEBVinternalJSONNode@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@1_N@Z @1171 NONAME
+?RemoveWhiteSpace@JSONWorker@@SAPEADAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAD@Z @1172 NONAME
+?RemoveWhiteSpaceAndComments@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV23@@Z @1173 NONAME
+?SpecialChar@JSONWorker@@CAXAEAPEBDAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1174 NONAME
+?UTF8@JSONWorker@@CAEAEAPEBD@Z @1175 NONAME
+?UTF8_2@JSONWorker@@CAPEADAEAPEBD@Z @1176 NONAME
+?UnfixString@JSONWorker@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV23@_N@Z @1177 NONAME
+?as_array@JSONNode@@QEBA?AV1@XZ @1178 NONAME
+?as_bool@JSONNode@@QEBA_NXZ @1179 NONAME
+?as_float@JSONNode@@QEBANXZ @1180 NONAME
+?as_int@JSONNode@@QEBAJXZ @1181 NONAME
+?as_node@JSONNode@@QEBA?AV1@XZ @1182 NONAME
+?as_string@JSONNode@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1183 NONAME
+?at@JSONNode@@QEAAAEAV1@PEBD@Z @1184 NONAME
+?at@JSONNode@@QEAAAEAV1@_K@Z @1185 NONAME
+?at@JSONNode@@QEBAAEBV1@PEBD@Z @1186 NONAME
+?at@JSONNode@@QEBAAEBV1@_K@Z @1187 NONAME
+?begin@JSONNode@@QEAA?AUiterator@1@XZ @1188 NONAME
+?begin@JSONNode@@QEBA?AUconst_iterator@1@XZ @1189 NONAME
+?cast@JSONNode@@QEAAXD@Z @1190 NONAME
+?clear@JSONNode@@QEAAXXZ @1191 NONAME
+?decRef@JSONNode@@AEAAXXZ @1192 NONAME
+?deleteJSONNode@JSONNode@@SAXPEAV1@@Z @1193 NONAME
+?duplicate@JSONNode@@QEBA?AV1@XZ @1194 NONAME
+?empty@JSONNode@@QEBA_NXZ @1195 NONAME
+?end@JSONNode@@QEAA?AUiterator@1@XZ @1196 NONAME
+?end@JSONNode@@QEBA?AUconst_iterator@1@XZ @1197 NONAME
+?erase@JSONNode@@QEAA?AUiterator@1@U21@@Z @1198 NONAME
+?erase@JSONNode@@QEAA?AUiterator@1@U21@AEBU21@@Z @1199 NONAME
+?erase@JSONNode@@QEAA?AUreverse_iterator@1@U21@@Z @1200 NONAME
+?erase@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBU21@@Z @1201 NONAME
+?find@JSONNode@@QEAA?AUiterator@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1202 NONAME
+?find@JSONNode@@QEBA?AUconst_iterator@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1203 NONAME
+?insert@JSONNode@@QEAA?AUiterator@1@U21@AEBU21@1@Z @1204 NONAME
+?insert@JSONNode@@QEAA?AUiterator@1@U21@AEBUconst_iterator@1@1@Z @1205 NONAME
+?insert@JSONNode@@QEAA?AUiterator@1@U21@AEBUreverse_const_iterator@1@1@Z @1206 NONAME
+?insert@JSONNode@@QEAA?AUiterator@1@U21@AEBUreverse_iterator@1@1@Z @1207 NONAME
+?insert@JSONNode@@QEAA?AUiterator@1@U21@AEBV1@@Z @1208 NONAME
+?insert@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBU21@1@Z @1209 NONAME
+?insert@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBUconst_iterator@1@1@Z @1210 NONAME
+?insert@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBUiterator@1@1@Z @1211 NONAME
+?insert@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBUreverse_const_iterator@1@1@Z @1212 NONAME
+?insert@JSONNode@@QEAA?AUreverse_iterator@1@U21@AEBV1@@Z @1213 NONAME
+?insertFFF@JSONNode@@AEAA?AUiterator@1@U21@QEAPEAV1@1@Z @1214 NONAME
+?insertFRR@JSONNode@@AEAA?AUiterator@1@U21@QEAPEAV1@1@Z @1215 NONAME
+?insertRFF@JSONNode@@AEAA?AUreverse_iterator@1@U21@QEAPEAV1@1@Z @1216 NONAME
+?insertRRR@JSONNode@@AEAA?AUreverse_iterator@1@U21@QEAPEAV1@1@Z @1217 NONAME
+?makeUniqueInternal@JSONNode@@AEAAXXZ @1218 NONAME
+?merge@JSONNode@@AEAAXPEAV1@@Z @1219 NONAME
+?merge@JSONNode@@QEAAXAEAV1@@Z @1220 NONAME
+?merge@JSONNode@@QEAAXIZZ @1221 NONAME
+?name@JSONNode@@QEBAPEBDXZ @1222 NONAME
+?newJSONNode@JSONNode@@CAPEAV1@AEBV1@@Z @1223 NONAME
+?newJSONNode@JSONNode@@CAPEAV1@PEAVinternalJSONNode@@@Z @1224 NONAME
+?newJSONNode_Shallow@JSONNode@@SAPEAV1@AEBV1@@Z @1225 NONAME
+?nullify@JSONNode@@QEAAXXZ @1226 NONAME
+?parse@JSONNode@@SA?AV1@PEBD@Z @1227 NONAME
+?parse@JSONWorker@@SA?AVJSONNode@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1228 NONAME
+?pop_back@JSONNode@@QEAA?AV1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1229 NONAME
+?pop_back@JSONNode@@QEAA?AV1@_K@Z @1230 NONAME
+?preparse@JSONNode@@QEAAXXZ @1231 NONAME
+?push_back@JSONNode@@QEAAXAEBV1@@Z @1232 NONAME
+?rbegin@JSONNode@@QEAA?AUreverse_iterator@1@XZ @1233 NONAME
+?rbegin@JSONNode@@QEBA?AUreverse_const_iterator@1@XZ @1234 NONAME
+?rend@JSONNode@@QEAA?AUreverse_iterator@1@XZ @1235 NONAME
+?rend@JSONNode@@QEBA?AUreverse_const_iterator@1@XZ @1236 NONAME
+?reserve@JSONNode@@QEAAX_K@Z @1237 NONAME
+?set_name@JSONNode@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @1238 NONAME
+?size@JSONNode@@QEBA_KXZ @1239 NONAME
+?swap@JSONNode@@QEAAXAEAV1@@Z @1240 NONAME
+?toUTF8@JSONWorker@@CA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@E@Z @1241 NONAME
+?type@JSONNode@@QEBAEXZ @1242 NONAME
+?write@JSONNode@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1243 NONAME
+?write_formatted@JSONNode@@QEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ @1244 NONAME